Bug #60515 [NEW]: "Invalid parameter number" although it is correct

From: Date: Tue, 13 Dec 2011 20:57:47 +0000
Subject: Bug #60515 [NEW]: "Invalid parameter number" although it is correct
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-165844@lists.php.net to get a copy of this message
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



Thread (7 messages)

« previous php.bugs (#165844) next »