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你的评论有点唐突。请友善一点