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] [EMAIL PROTECTED] 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] [EMAIL PROTECTED] 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