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

Reply via email to