ID: 29215 User updated by: rudy dot metzger at xs4all dot nl Reported By: rudy dot metzger at xs4all dot nl -Status: Bogus +Status: Open Bug Type: MySQL related Operating System: Linux RH ES 3 PHP Version: 5.0.0 New Comment:
parlnx03> select version(); +-------------------------+ | version() | +-------------------------+ | 4.1.3-beta-standard-log | +-------------------------+ 1 row in set (0.00 sec) parlnx03> show create table test; +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | test | CREATE TABLE `test` ( `a` varchar(50) default NULL, `b` int(11) default NULL, `c` datetime default NULL, `d` float default NULL, `e` text ) ENGINE=MyISAM DEFAULT CHARSET=latin1 | +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) parlnx03> Do not insert any data into the table (in practise, it does not matter if you insert data or not, the result will be the same) [command] php --version PHP 5.0.0 (cli) (built: Jul 16 2004 13:57:08) Copyright (c) 1997-2004 The PHP Group Zend Engine v2.0.0, Copyright (c) 1998-2004 Zend Technologies <?php $dbh = mysql_connect( 'localhost', 'myself', 'mypwd' ); mysql_select_db( 'test' ); $sql = "SELECT a, b, c, d, e FROM test LIMIT 1"; $res = mysql_unbuffered_query( $sql, $dbh ); echo "Following is off by one index!\n"; echo mysql_field_type( $res, 0 )." -> should be A, but is B\n"; echo mysql_field_type( $res, 1 )." -> should be B, but is C\n"; echo mysql_field_type( $res, 2 )." -> should be C, but is D\n"; echo mysql_field_type( $res, 3 )." -> should be D, but is E\n"; echo mysql_field_type( $res, 4 )." ALWAYS real"; echo " NOTE: A is missing!\n"; mysql_free_result( $res ); mysql_close( $dbh ); ?> ---------------- SCRIPT OUTPUT -------------------------- [command] php db.php Following is off by one index! int -> should be A, but is B datetime -> should be B, but is C real -> should be C, but is D blob -> should be D, but is E real ALWAYS real NOTE: A is missing! ---------------- END OUTPUT ----------------------------- As you can see, the output is off by one index (actually, the first field should be -1). The last field is always real (cannot mapped anymore, because index is off). At MySQL 4.1.2 alpha the last one was random (real, unknown, ..) An easy way to reproduce: 1) create the table 2) modify the script with your userid/pwd 3) run the script Happy debugging! And hope I could be of some help. Cheerio /rudy Previous Comments: ------------------------------------------------------------------------ [2004-07-16 18:35:58] [EMAIL PROTECTED] Please use actual mysql version for server and client (4.1.3-beta). If you will be able to reproduce the bug, send a reproducable and short testscript (including create table statement, and insert statement, output of client and server version) and reopen this bug. ------------------------------------------------------------------------ [2004-07-16 16:30:42] rudy dot metzger at xs4all dot nl Description: ------------ mysql_file_type() returns bogus data. PHP 5.0.0 mysql> desc zpm_auth; +----------+-------------+------+-----+---------------------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------------------+-------+ | userid | varchar(20) | | PRI | | | | username | varchar(50) | YES | | NULL | | | password | varchar(32) | YES | | NULL | | | creusr | varchar(32) | | | | | | credat | datetime | | | 0000-00-00 00:00:00 | | | modusr | varchar(32) | | | | | | moddat | datetime | | | 0000-00-00 00:00:00 | | +----------+-------------+------+-----+---------------------+-------+ 7 rows in set (0.00 sec) mysql> select version(); +--------------------------+ | version() | +--------------------------+ | 4.1.2-alpha-standard-log | +--------------------------+ 1 row in set (0.00 sec) mysql> $sql = "SELECT userid FROM zpm_auth LIMIT 1"; $res = mysql_query( $sql, $this->DBH() ); $this->EvaluateCommand( $res, false, true, $sql ); $colType = mysql_field_type( $res, 0 ); die( $colType ); Works in PHP5 RC3 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=29215&edit=1