From: petr at hroch dot info Operating system: Linux Debian 4.0 Etch PHP version: 5.3CVS-2008-03-18 (snap) PHP Bug Type: PDO related Bug description: PDO SQlite method bindParam doesn't work properly in foreach cycle
Description: ------------ PDO method bindParam doesn't work properly in foreach cycle Reproduce code: --------------- <? $dbh = new PDO("sqlite:test.db3"); //1. CREATE TEST TABLE $create_table_query = "create table test (col1 varchar, col2 varchar, col3 varchar)"; if (!$sth = $dbh->prepare($create_table_query)) { print_r($dbh->errorInfo()); exit; } if ($sth->execute()) { echo "Test table created successfully\n"; } $sth = null; //2. INSERT ONE RECORD TO THE TEST TABLE $insert_record_query = "insert into test (col1,col2,col3) values (:col1, :col2, :col3)"; if (!$sth = $dbh->prepare($insert_record_query)) { print_r($dbh->errorInfo()); exit; } //3. DATA BINDINGS $bindings[":col1"] = "test value in col 1"; $bindings[":col2"] = "test value in col 2"; $bindings[":col3"] = "test value in col 3"; foreach ($bindings as $var => $value) { echo "Binding data, $var => $value\n"; $sth->bindParam($var, $value); } if ($sth->execute()) { echo "Record inserted successfully\n"; } $sth = null; //4. DISPLAY TABLE RECORD $show_record_query = "select * from test"; if (!$sth = $dbh->prepare($show_record_query)) { print_r($dbh->errorInfo()); exit; } if ($sth->execute()) { print_r($sth->fetchAll(PDO::FETCH_ASSOC)); } $dbh = null; ?> Expected result: ---------------- Test table created successfully Binding data, :col1 => test value in col 1 Binding data, :col2 => test value in col 2 Binding data, :col3 => test value in col 3 Record inserted successfully Array ( [0] => Array ( [col1] => test value in col 1 [col2] => test value in col 2 [col3] => test value in col 3 ) ) Actual result: -------------- Test table created successfully Binding data, :col1 => test value in col 1 Binding data, :col2 => test value in col 2 Binding data, :col3 => test value in col 3 Record inserted successfully Array ( [0] => Array ( [col1] => test value in col 3 [col2] => test value in col 3 [col3] => test value in col 3 ) ) -- Edit bug report at http://bugs.php.net/?id=44468&edit=1 -- Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=44468&r=trysnapshot52 Try a CVS snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=44468&r=trysnapshot53 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=44468&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=44468&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=44468&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=44468&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=44468&r=needscript Try newer version: http://bugs.php.net/fix.php?id=44468&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=44468&r=support Expected behavior: http://bugs.php.net/fix.php?id=44468&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=44468&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=44468&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=44468&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=44468&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=44468&r=dst IIS Stability: http://bugs.php.net/fix.php?id=44468&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=44468&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=44468&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=44468&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=44468&r=mysqlcfg