ID:               35103
 User updated by:  php at pjberkel dot com
 Reported By:      php at pjberkel dot com
 Status:           Open
 Bug Type:         MySQLi related
 Operating System: *
 PHP Version:      5.1CVS-2005-12-02 (cvs)
 Assigned To:      andrey
 New Comment:

Additionally, it appears that mysqli_stmt_bind_param() suffers from the
same unsigned integer problem as mysqli_stmt_bind_result() when there
bind type is set to "i" and the actual bind data is > MAX_UNSIGNED_INT
on a 32 bit platform.

Below is an example of the bug using php5.1-200512020130 and
mysql-5.0.16 on RHEL 4 (intel):

Reproduce code:
---------------
<?php

$mysqli = new mysqli("host", "user", "pass", "db");
$mysqli->query("CREATE TABLE temp (id INT UNSIGNED NOT NULL)");
$mysqli->query("INSERT INTO temp (id) VALUES
(3000000897),(3800001532),(3900002281),(3100059612)");

$id_val = 3900002281;

/* BEGIN EXAMPLE OF BUG */
$stmt = $mysqli->prepare("SELECT id FROM temp WHERE id = ?");
$stmt->bind_param("i", $id_val);
$stmt->execute();
$stmt->bind_result($id);
$stmt->fetch();
var_dump($id);
$stmt->close();
/* END EXAMPLE OF BUG */

$mysqli->query("DROP TABLE temp");
$mysqli->close();

?>

Expected result:
----------------
string(10) "3000000897"

Actual result:
--------------
int(0)

Interestingly, if the bind type in $stmt->bind_param() is changed to
"d" the above reproduce code works as expected.


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

[2005-12-02 06:50:50] php at pjberkel dot com

I tested my original reproduce code using the lastest stable snapshot
available (php5.1-200512020130), but there appears to be another bug
(or feature) introduced because no output is being generated at all.

It appears as though $stmt->fetch() is returning NULL despite the fact
that it correcly bound the result set.  I notice in the manual page
that mysqli_stmt_fetch() returns NULL when "No more rows/data exists or
data truncation occurred".  Can anybody confirm this is a bug or
feature?

FYI I'm testing this with MySQL 5.0.16 on RHEL 4.

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

[2005-11-30 17:26:36] [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.



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

[2005-11-21 21:52:34] [EMAIL PROTECTED]

I have a fix for this problem as well as speedup of the current code
that handles unsigned ints on 32bit but I will push it after 5.1.0 is
released because it's a bit too late in the release cycle.

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

[2005-11-15 18:37:22] [EMAIL PROTECTED]

I am taking care of this problem.
Thanks!

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

[2005-11-10 08:54:25] [EMAIL PROTECTED]

Andrey, really REALLY big ints don't work yet! :)
 

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

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

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

Reply via email to