Edit report at http://bugs.php.net/bug.php?id=50757&edit=1
ID: 50757
Updated by: [email protected]
Reported by: christian at activemediaworks dot com
Summary: PDO MYSQL issue with BIT data type not setting correct
value
-Status: Open
+Status: Bogus
Type: Bug
Package: PDO related
Operating System: MAC OSX 10.5.8
PHP Version: 5.2.12
New Comment:
No bug here. This is how crappy PDO works ever since. If you don't
specify a bind type, binding will use strings. Your code:
$stmt = $db->prepare("INSERT INTO mytable (mybit) VALUES (?)");
$stmt->execute(array(0));
... is equivalent to:
$stmt = $db->prepare("INSERT INTO mytable (mybit) VALUES ('0')");
$stmt->execute(array(0));
Which in turn inserts 1 into the BIT column.
Previous Comments:
------------------------------------------------------------------------
[2010-01-14 20:22:48] christian at activemediaworks dot com
Description:
------------
When trying to insert a row with a 0-value into a column of type BIT(1),
if the value for the column is not hard-coded into SQL statement, it
causes the value to be inserted to become 1. If it is hardcoded, it is
okay.
Reproduce code:
---------------
/* This results in the value of the column being set to 1 (incorrect)
*/
$db = new PDO ( "mysql:dbname=db1234;host=localhost", "user1234",
"pass1234" );
$stmt = $db->prepare("INSERT INTO mytable (mybit) VALUES (?)");
$stmt->execute(array(0));
db_disconnect($db);
/* This results in the value of the column being set to 0 (correct) */
$db = new PDO ( "mysql:dbname=db1234;host=localhost", "user1234",
"pass1234" );
$stmt = $db->prepare("INSERT INTO mytable (mybit) VALUES (0)");
$stmt->execute();
db_disconnect($db);
Actual result:
--------------
The first example inserts a row with the column value set to 1 (wrong)
The second example inserts a row with the column value set to 0 (right)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=50757&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.