当PDO中的其他一切都正常工作时,无法执行PDO语句(更新MySQL表)


Cannot execute a PDO statement (update a MySQL table) when everything else in PDO works

这是我在StackOverflow上的第一个问题,你能不能向我解释一下我做错了什么:我有这个代码(下面),但由于某种原因,我试图研究和调试,我看不出为什么PDO没有完成下面的请求,它以相同的方式插入和回显,有人能告诉我发生了什么吗?我沮丧地把头发都拔了出来。

    $q = "UPDATE content SET urlid=:url, title=:title, description=:desc, keywords=:key     WHERE urlid=:urlid";
    $query = $pdo->prepare($q);
    $query->execute(array(
        ':url'     => $urlid,
        ':title'   => $title,
        ':desc'    => $desc,
        ':key'     => $key,
        ':contloc' => $contloc,
        ':userid'  => $uid,
        ':urlid'   => $urlid
        //':content' => $content
    ));

我在Apache错误日志中收到以下警告:

〔2012年7月12日星期四21:07:13〕〔error〕〔client 99.230.122.54〕PHP警告:PDOStatement::execute():SQLSTATE〔HY093〕:无效参数编号:绑定变量的数量与第31行/Library/Server/Web/Data/Sites/Default/addto2.PHP中的令牌数量不匹配,referr:http://localhost/sample/4fff30aea1f20

$q = "UPDATE content SET urlid=:url, title=:title, description=:desc, keywords=:key WHERE urlid=:urlid";
$query = $pdo->prepare($q);
$query->execute(array(
    ':url'     => $urlid,
    ':title'   => $title,
    ':desc'    => $desc,
    ':key'     => $key,
    ':urlid'   => $urlid
));

PDO抱怨是因为您传递的参数比查询中使用的参数多。或者您本想在查询中包含更多的参数,但您忘记了?