ID:               28912
 User updated by:  danielc at analysisandsolutions dot com
 Reported By:      danielc at analysisandsolutions dot com
 Status:           Closed
 Bug Type:         Documentation problem
 Operating System: Windows 2000
 PHP Version:      5CVS-2004-06-24 (dev)
 New Comment:

If anyone wonders about the second example returning
253/MYSQLI_TYPE_VAR_STRING for the CHAR column, it's due to silent
column changes by MySQL:

"if a table contains any variable-length columns... all CHAR columns
longer than three characters are changed to VARCHAR columns."

http://dev.mysql.com/doc/mysql/en/Silent_column_changes.html


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

[2004-06-29 07:50:48] [EMAIL PROTECTED]

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.



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

[2004-06-29 01:37:12] danielc at analysisandsolutions dot com

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
^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

[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? 

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

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/28912

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

Reply via email to