ID: 28912 User updated by: danielc at analysisandsolutions dot com Reported By: danielc at analysisandsolutions dot com -Status: Bogus +Status: Open Bug Type: MySQL related Operating System: Windows 2000 PHP Version: 5CVS-2004-06-24 (dev) New Comment:
Ah. Thanks for the clarification. Then phpdoc/en/reference/mysqli/constants.xml needs updating. You said: varchar column definition returns MYSQLI_TYPE_VAR_STRING, char column definition returns MYSQLI_TYPE_STRING. Though the docs say: MYSQLI_TYPE_STRING (integer) Field is defined as VARCHAR MYSQLI_TYPE_CHAR (integer) Field is defined as CHAR BUT, not so fast... CHAR columns return 253, but MYSQLI_TYPE_STRING's value is 254. And MYSQLI_TYPE_CHAR is defined, but what's it for? <?php mysqli_query($db->connection, 'CREATE TABLE bar (Vf VARCHAR(5),' . ' Cf CHAR(5))'); $r = mysqli_query($db->connection, 'SELECT Vf, Cf FROM bar'); $tmp = mysqli_fetch_field($r); echo "$tmp->name type found = $tmp->type\n"; echo 'MYSQLI_TYPE_VAR_STRING = ' . MYSQLI_TYPE_VAR_STRING . "\n\n"; $tmp = mysqli_fetch_field($r); echo "$tmp->name type found = $tmp->type\n"; echo 'MYSQLI_TYPE_STRING = ' . MYSQLI_TYPE_STRING . "\n\n"; echo "So, what's this for?...\n"; echo 'MYSQLI_TYPE_CHAR = ' . MYSQLI_TYPE_CHAR . "\n"; mysqli_query($db->connection, 'DROP TABLE bar'); ?> vvvvvvv OUTPUT vvvvvvvvvvvv Vf type found = 253 MYSQLI_TYPE_VAR_STRING = 253 Cf type found = 253 MYSQLI_TYPE_STRING = 254 So, what's this for?... MYSQLI_TYPE_CHAR = 1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Previous Comments: ------------------------------------------------------------------------ [2004-06-28 23:48:20] [EMAIL PROTECTED] Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php varchar column definition returns MYSQLI_TYPE_VAR_STRING, char column definition returns MYSQLI_TYPE_STRING. ------------------------------------------------------------------------ [2004-06-28 19:35:22] danielc at analysisandsolutions dot com Documentation isn't involved. This is purely code. The "type" property returned from the function != the value of the constant. Perhaps your getting the right result is due to both of us running different versions of the software? Here's what I'm on: MySQL: Ver 14.5 Distrib 4.1.2-alpha, for Win95/Win98 (i32) PHP: PHP 5.0.0-dev (cli) (built: Jun 28 2004 16:29:27) ------------------------------------------------------------------------ [2004-06-28 18:51:13] [EMAIL PROTECTED] Looks like a documentation problem. However I couldn't find this in documentation. Also the example output in mysqli_fetch_field returns 254. Could you please give me a link to the wrong documentation? ------------------------------------------------------------------------ [2004-06-24 18:50:07] danielc at analysisandsolutions dot com Description: ------------ The "type" value returned from mysqli_fetch_field() for a VARCHAR field is 253. The manual says the constant for VARCHAR fields is MYSQLI_TYPE_STRING which has a value of 254. So, there's no way to determine column types via constants for VARCHAR's. Reproduce code: --------------- mysqli_query($db->connection, 'CREATE TABLE bar (Cf VARCHAR(5))'); $r = mysqli_query($db->connection, 'SELECT Cf FROM bar'); $tmp = mysqli_fetch_field($r); echo "type found = $tmp->type\n"; echo 'MYSQLI_TYPE_STRING = ' . MYSQLI_TYPE_STRING . "\n"; mysqli_query($db->connection, 'DROP TABLE bar'); Expected result: ---------------- type found = 254 MYSQLI_TYPE_STRING = 254 Actual result: -------------- type found = 253 MYSQLI_TYPE_STRING = 254 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28912&edit=1