|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits              [2013-08-20 13:07 UTC] mike@php.net
 
-Status: Open
+Status: Analyzed
  [2013-08-20 13:07 UTC] mike@php.net
  [2013-08-20 17:26 UTC] mike@php.net
  [2013-08-20 17:26 UTC] mike@php.net
 
-Status: Analyzed
+Status: Closed
  [2014-10-07 23:17 UTC] stas@php.net
  [2014-10-07 23:28 UTC] stas@php.net
 | |||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 01:00:01 2025 UTC | 
Description: ------------ Using a prepared statement with positional parameters will produce unexpected behaviour when casting these parameters. Test script: --------------- // pdo $pdo = new \PDO("pgsql:host=localhost;dbname=db", "user", "pwd"); $pdo->setAttribute (\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); $st = $pdo->prepare('SELECT ?::char as i'); $st->bindValue(1, '1'); $st->execute(); var_dump($st->fetch()); // return false $st = $pdo->prepare('SELECT (?)::char as i'); $st->bindValue(1, '1'); $st->execute(); var_dump($st->fetch()); // return array(1) { ["i"]=> string(1) "1" } // old pg extension $dbconn = pg_connect("host=localhost dbname=superdpi user=postgres password=df54tb70"); $result = pg_prepare($dbconn, "my_query", 'SELECT $1::char as i'); $result = pg_execute($dbconn, "my_query", array("1")); var_dump(pg_fetch_assoc ( $result)); // return array(1) { ["i"]=> string(1) "1" } Expected result: ---------------- array(2) { ["i"]=> string(1) "1" [0]=> string(1) "1" } array(2) { ["i"]=> string(1) "1" [0]=> string(1) "1" } array(1) { ["i"]=> string(1) "1" } Actual result: -------------- bool(false) array(2) { ["i"]=> string(1) "1" [0]=> string(1) "1" } array(1) { ["i"]=> string(1) "1" }