#39892 [Opn->Bgs]: fetch_fields / fetch_field_direct
| From: | iliaa@php.net | Date: | Sun, 21 Jan 2007 19:31:44 +0000 |
| Subject: | #39892 [Opn->Bgs]: fetch_fields / fetch_field_direct | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-107845@lists.php.net to get a copy of this message | ||
ID: 39892
Updated by: iliaa@php.net
Reported By: migues at email dot cz
-Status: Open
+Status: Bogus
Bug Type: MySQLi related
Operating System: Win XP Pro SP2
PHP Version: 5.2.0
New Comment:
Sorry, but your problem does not imply a bug in PHP itself. For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system
is not the
appropriate forum for asking support questions. Due to the volume
of reports we can not explain in detail here why your report is not
a bug. The support channels will be able to provide an explanation
for you.
Thank you for your interest in PHP.
The problem here is that the mysql mysql_fetch_field_direct()
function fails to populate the "def" property of the
MYSQL_FIELD structure. This subsequently causes PHP to put an
empty string for its value.
Previous Comments:
------------------------------------------------------------------------
[2007-01-18 08:01:45] migues at email dot cz
Thanks to Christian and his example code, status can be changed to open
again.
------------------------------------------------------------------------
[2007-01-17 21:43:06] ceabear at gmx dot de
Here is a quick example code for the original bug report,
it should print the column name and its defined default value for the
column.
<?php
$sql="CREATE TABLE
fetchfield (
id int(11) NOT NULL auto_increment,
product varchar(11) collate latin1_german1_ci NOT NULL default
'standard',
test int(11) default '3',
nullable int(11) default NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM;";
$con=mysqli_connect('localhost','username','password','test');
mysqli_query($con,$sql);
$res=mysqli_query($con,"SELECT * FROM test.fetchfield");
$metas=mysqli_fetch_fields($res);
foreach($metas as $meta)
{
echo 'default for '.$meta->name.' is:';
var_dump($meta->def);
echo '<br>';
}
?>
this creates a simple test table with some fields, which get default
values by definition.
as a result I get:
default for id is:string(0) ""
default for product is:string(0) ""
default for test is:string(0) ""
default for nullable is:string(0) ""
the column names are printed ($meta-name) but the default value
($meta->def) is always an empty string.
expected output is:
default for id is:string(0) ""
default for product is:string(0) "standard"
default for test is:string(0) "3"
default for nullable is:string(0) null
it looks like the default value is always an empty string instead of
data out of the database.
looking into the source of php, a null value would be never returned
(because of the source code).
I tried to find out, if this could be a problem of the c-api of mysql,
but didn't find a fitting bug entry on mysql.
maybe this helps to understand the problem?
I used mysql version 5.0.21-community-nt-log on Windows 2000 SP4 and
PHP 5.2.0 for testing
------------------------------------------------------------------------
[2006-12-27 01:00:00] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
------------------------------------------------------------------------
[2006-12-19 22:21:26] tony2001@php.net
It might become really simple as soon as I get what you're talking
about.
At the moment I don't get it, sorry.
------------------------------------------------------------------------
[2006-12-19 21:56:49] migues at email dot cz
Hey guys!
Sorry I'm quite novice so it would took me long time to reproduce step
by step creation a.s.o.
But it's simple :
def $res->fetch_fields(); in returns always null! I guess it will work
always the same on other mysql 5.0... with mysqli_result object
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/39892
--
Edit this bug report at http://bugs.php.net/?id=39892&edit=1