PHP PDO准备更新语句
下面是我准备发言的尝试。它正在导致页面在此时死亡,所以很明显有些地方出了问题PHP PDO准备更新语句,php,mysql,pdo,Php,Mysql,Pdo,下面是我准备发言的尝试。它正在导致页面在此时死亡,所以很明显有些地方出了问题 function telephoneinsert($elector,$inputs,$outputs){ global $dbh; $sql = "UPDATE electors SET $inputs WHERE ID=?"; $q = $dbh->prepare($sql); $q->execute(arra
function telephoneinsert($elector,$inputs,$outputs){
global $dbh;
$sql = "UPDATE electors SET $inputs WHERE ID=?";
$q = $dbh->prepare($sql);
$q->execute(array($outputs,$elector));
//UPDATE STATS
}
这就是在页面上调用的函数,如下所示
telephoneinsert($Ielector,$inputs,$outputs);
其中$inputs=一个已发布的数组,如果被回送,则该数组看起来像name=?,type=?
。故意删除最后一个逗号
与$outputs相同的原则,如果回声看起来像benjamin,socialistic
错误报告没有显示任何内容
$this->pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
print_r($dbh->errorInfo());
在这里的数组中有2个元素
$q->execute(array($outputs,$elector));
但是只有一个
?
在sql中,数组元素的数量需要与它们出现的顺序中的问号数量匹配$outputs
包含逗号分隔的字符串,但是execute()
希望参数作为数组元素传递。因此,必须将字符串分开:
$q->execute(explode(',', "$outputs,$elector"));
是否已打开错误报告功能?您的PDO是否正确设置了错误报告模式?我不这么认为,因为它没有显示任何内容$此->pdo->setAttribute(pdo::ATTR_ERRMODE,pdo::ERRMODE_WARNING);打印($dbh->errorInfo());要匹配的问号不止一个。Inputs包含任意数量的问号$Inputs='name=?,type=?'你为什么在这里提交一段我的代码作为答案,而你显然没有读过这个问题。@Robin Knight实际上,这个答案是正确的,不同的是,
1
应该是3
…因为我在说明你没有足够的问号。我这样做是因为我想帮助你,jeroen是对的,应该是3,但在你发布的时候,你的问题还没有发展到足以显示$inputs中的内容。PS你的评论有点唐突。请友善一点