0
PHP PDO顯示一些莫名其妙的行爲。參數佔位符被替換爲相同的值。PHP PDO佔位符被替換爲相同的值
$查詢
UPDATE `newsletters` SET `title` = :title , `scheduled` = :scheduled , `modified` = :modified WHERE `id` = :id
$參數
Array
(
[:title] => New Newsletter22
[:scheduled] => 2013-04-15 21:47:00
[:modified] => 2013-04-15 21:47:51
[:id] => 35
)
的功能
public static function execute($query=null,$parameters=array())
{
global $dbnew;
$statement= $dbnew->prepare($query);
foreach($parameters as $k=>$v){
if(is_array($v)){
$statement->bindParam($k, $v[0],$v[1]);
}else{
$statement->bindParam($k, $v);
}
}
$statement->execute();
return $statement;
}
執行的查詢
1132 Query UPDATE `newsletters` SET `title` = '35' , `scheduled` = '35' , `modified` = '35' WHERE `id` = '35'
您可能想使用'bindValue'而不是'bindParam'。您的foreach循環會在每次迭代時覆蓋$ v的值。更多信息在這裏:http://stackoverflow.com/questions/1179874/pdo-bindparam-versus-bindvalue – showdev
是的,或將值推入數組。 – Jonast92
每當在我的PHP代碼中看起來對我來說難以理解時,我或多或少會自動轉到手冊中的函數/方法頁面,並仔細檢查所有參數,返回類型,註釋,警告和用戶註釋。大多數情況下,這是一個簡短的A-HA!然後回到編碼。 –