#39892 [Com]: fetch_fields / fetch_field_direct

From: Date: Wed, 17 Jan 2007 21:43:08 +0000
Subject: #39892 [Com]: fetch_fields / fetch_field_direct
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-107704@lists.php.net to get a copy of this message
 ID:               39892
 Comment by:       ceabear at gmx dot de
 Reported By:      migues at email dot cz
 Status:           No Feedback
 Bug Type:         MySQLi related
 Operating System: Win XP Pro SP2
 PHP Version:      5.2.0
 New Comment:

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


Previous Comments:
------------------------------------------------------------------------

[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

------------------------------------------------------------------------

[2006-12-19 21:37:20] tony2001@php.net

Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.



------------------------------------------------------------------------

[2006-12-19 21:23:11] migues at email dot cz

Description:
------------
MySQL version: 5.0.27

def column for fetch_fields / fetch_field_direct is empty even if
default values are set 

Reproduce code:
---------------
$arrfields=$res->fetch_fields();
 for ($i=0;$i<$res->field_count;$i++)
 {
 		
// /*OR */		foreach ($arrfields as $arrname=>$arrfld)
 			//{
 				
 			$arrfld=$res->fetch_field_direct($i);

			$fldinfo->appendChild($fldNode=$this->DOM->createElement(dbtag_field));
 			$fldNode->setAttribute(dbtag_fieldname,$arrfld->name);
 			$fldNode->setAttribute(dbtag_fieldorgname,$arrfld->orgname);	
 			foreach($arrfld as $key=>$val)
 			{
 			$fldNode->appendChild($this->DOM->createElement($key,$val));	
 			}};

Expected result:
----------------
<name>fieldname</name>
....
<def>default _ value</def>
....

Actual result:
--------------
<name>fieldname</name>
....
<def></def>
....


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=39892&edit=1


Thread (7 messages)

« previous php.bugs (#107704) next »