3

これは 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 エラー ログに次の警告が表示されます。

[Thu Jul 12 21:07:13 2012] [エラー] [クライアント 99.230.122.54] PHP 警告: PDOStatement::execute(): SQLSTATE[HY093]: 無効なパラメーター番号: バインドされた変数の数がトークンの数と一致しません/Library/Server/Web/Data/Sites/Default/addto2.php の 31 行目、リファラー:http://localhost/sample/4fff30aea1f20

4

1 に答える 1

2
$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 は文句を言います。それとも、クエリにもっと多くの引数を含めるつもりだったのに、忘れてしまったのでしょうか?

于 2012-07-13T01:18:14.597 に答える