ID: 29841
User updated by: maillist at pnpitalia dot it
Reported By: maillist at pnpitalia dot it
Status: Open
Bug Type: MySQL related
Operating System: linux gentoo 3q2004
PHP Version: 5CVS-2004-08-25 (dev)
New Comment:
worst ... almost for varchar (type=253) field it *always* return the
length of the string contained in the recordset .
i.e. with the previous example:
if used SELECT username WHERE username ="12345"
[max_length] => 5
Previous Comments:
------------------------------------------------------------------------
[2004-08-25 18:31:25] maillist at pnpitalia dot it
Description:
------------
mysqli_fetch_field return an object like this (printed with print_r):
stdClass Object
(
[name] => username
[orgname] => username
[table] => utenti
[orgtable] => utenti
[def] =>
[max_length] => 0
[flags] => 16392
[type] => 253
[decimals] => 0
)
the property [max_length] should contain the lenght of the field.
Often empty query (select * from utenti where id = -1) are used to
retrieve the description of the query when u want to automatically
generate a form to insert a record, so I think it's important that this
function work also with this kind of query.
My workaround for now is to open 2 recordset one selecting the first
row of the table (SELECT ... WHERE 1 LIMIT 0,1) and the other with the
right where clause.
BTW in php 4.3.x and obviously with the mysql extension not mysqli it
work well.
Reproduce code:
---------------
<?php
// modified mysqli_fetch_field manual example
$link = mysqli_connect("localhost", "my_user", "my_password",
"world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, SurfaceArea from Country
where code = 'ZZZ'
ORDER BY Code LIMIT 5";
if ($result = mysqli_query($link, $query)) {
/* Get field information for all fields */
while ($finfo = mysqli_fetch_field($result)) {
printf("Name: %s\n", $finfo->name);
printf("Table: %s\n", $finfo->table);
printf("max. Len: %d\n", $finfo->max_length);
printf("Flags: %d\n", $finfo->flags);
printf("Type: %d\n\n", $finfo->type);
}
mysqli_free_result($result);
}
/* close connection */
mysqli_close($link);
?>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=29841&edit=1