From:
Operating system: archlinux x86_64
PHP version: 5.3.8
Package: PDO related
Bug Type: Bug
Bug description:"Invalid parameter number" although it is correct
Description:
------------
When I execute the attached test script an exception is thrown with the
message:
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does
not match number of tokens
The exception is raised in the execute() line.
If you change the WHERE clause to `id`=24 there is no error message.
The same is true for this query: UPDATE `edtable` SET `id`=:p0 WHERE
`id`='24'
The generated error message is obviously not correct. I don't even see why
an error message is generated as the request seems valid (although strange)
to me.
Test script:
---------------
$createTableSql = <<<'EOT'
DROP TABLE IF EXISTS `edtable`;
CREATE TABLE IF NOT EXISTS `edtable` (
`id` bigint(20) NOT NULL,
`coun't()` varchar(20) NOT NULL
);
EOT;
$pdo = new PDO('mysql:host=localhost;dbname=aynte','aynte','aynte');
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$result = $pdo->query($createTableSql);
$result->closeCursor();
$stmt = $pdo->prepare("UPDATE `edtable` SET `id`=:p0, `coun't()`= :p1
WHERE `id`='24'");
$stmt->execute(array(':p0'=>'2', ':p1'=>'b2' ));
Expected result:
----------------
No error message.
Actual result:
--------------
PHP Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does
not match number of tokens' in /srv/http/test.php:19\nStack trace:\n#0
/srv/http/test.php(19): PDOStatement->execute(Array)\n#1 {main}\n thrown
in /srv/http/test.php on line 19
--
Edit bug report at https://bugs.php.net/bug.php?id=60515&edit=1
--
Try a snapshot (PHP 5.4):
https://bugs.php.net/fix.php?id=60515&r=trysnapshot54
Try a snapshot (PHP 5.3):
https://bugs.php.net/fix.php?id=60515&r=trysnapshot53
Try a snapshot (trunk):
https://bugs.php.net/fix.php?id=60515&r=trysnapshottrunk
Fixed in SVN:
https://bugs.php.net/fix.php?id=60515&r=fixed
Fixed in SVN and need be documented:
https://bugs.php.net/fix.php?id=60515&r=needdocs
Fixed in release:
https://bugs.php.net/fix.php?id=60515&r=alreadyfixed
Need backtrace:
https://bugs.php.net/fix.php?id=60515&r=needtrace
Need Reproduce Script:
https://bugs.php.net/fix.php?id=60515&r=needscript
Try newer version:
https://bugs.php.net/fix.php?id=60515&r=oldversion
Not developer issue:
https://bugs.php.net/fix.php?id=60515&r=support
Expected behavior:
https://bugs.php.net/fix.php?id=60515&r=notwrong
Not enough info:
https://bugs.php.net/fix.php?id=60515&r=notenoughinfo
Submitted twice:
https://bugs.php.net/fix.php?id=60515&r=submittedtwice
register_globals:
https://bugs.php.net/fix.php?id=60515&r=globals
PHP 4 support discontinued:
https://bugs.php.net/fix.php?id=60515&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=60515&r=dst
IIS Stability:
https://bugs.php.net/fix.php?id=60515&r=isapi
Install GNU Sed:
https://bugs.php.net/fix.php?id=60515&r=gnused
Floating point limitations:
https://bugs.php.net/fix.php?id=60515&r=float
No Zend Extensions:
https://bugs.php.net/fix.php?id=60515&r=nozend
MySQL Configuration Error:
https://bugs.php.net/fix.php?id=60515&r=mysqlcfg