| 
        php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
  [2005-07-27 15:57 UTC] wb at pro-net dot co dot uk
 Description:
------------
When using the same binding id in a query the PDOStatement::execute() method still requires you to specify the same amount of parameters.
Reproduce code:
---------------
<?php
$pdo = new PDO('pgsql:host=localhost dbname=bats user=user password=pass');
$pdo->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION);
$statement = $pdo->prepare("
            UPDATE groups
            SET
               lft = CASE WHEN lft > :right
                     THEN lft + 2
                     ELSE lft END,
               rgt = CASE WHEN rgt >= :right
                     THEN rgt + 2
                     ELSE rgt END
            WHERE
              rgt >= :right
            ");
$statement->execute(array(':right' => 5));
?>
Expected result:
----------------
Would expect the statement to execute without issue.
Actual result:
--------------
PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[08P01]: <<Unknown error>>: 7 ERROR:  bind message supplies 1 parameters, but prepared statement "pdo_pgsql_stmt_08257c0c" requires 3' in /usr/home/wb/bats/scripts/tests/pdoQuery.php:17
Stack trace:
#0 /usr/home/wb/bats/scripts/tests/pdoQuery.php(17): PDOStatement->execute(Array)
#1 {main}
  thrown in /usr/home/wb/bats/scripts/tests/pdoQuery.php on line 17
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits             
             | 
    |||||||||||||||||||||||||||||||||||||
            
                 
                Copyright © 2001-2025 The PHP GroupAll rights reserved.  | 
        Last updated: Tue Nov 04 04:00:01 2025 UTC | 
Would $statement = $pdo->prepare(" SET @sql_param=:php_param; SELECT ... FROM TAB where p=@sql_param or q=@sql_param "); $statement->execute(array(':php_param' => $php_variable)); work?Please, solution for this error: <br /> <b>Fatal error</b>: Uncaught PDOException: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'id_client_user' at row 1 in /home/sidecil/subdominios/cloud/apirest/v1/models/post.model.php:37 Stack trace: #0 /home/sidecil/subdominios/cloud/apirest/v1/models/post.model.php(37): PDOStatement->execute() #1 /home/sidecil/subdominios/cloud/apirest/v1/controllers/post.controller.php(17): PostModel::postData('users', Array) #2 /home/sidecil/subdominios/cloud/apirest/v1/routes/services/post.php(37): PostController::postData('users', Array) #3 /home/sidecil/subdominios/cloud/apirest/v1/routes/routes.php(44): include('/home/sidecil/s...') #4 /home/sidecil/subdominios/cloud/apirest/v1/controllers/routes.controller.php(11): include('/home/sidecil/s...') #5 /home/sidecil/subdominios/cloud/apirest/v1/index.php(22): RoutesController->index() #6 {main} thrown in <b>/home/sidecil/subdominios/cloud/apirest/v1/models/post.model.php</b> on line <b>37</b><br />