1

私は PDO とプリペアド ステートメントを初めて使用し、クエリに複数の値をバインドするのに問題があります。SELECT の作成中に 1 つだけであれば問題ありません。たとえば、次のようになります。

SELECT foo FROM table WHERE id=:something // no problem

しかし、複数、INSERTしようとすると行き詰まります:

Insert INTO mytable (field1, field2) VALUES (:value1, :value2) // No bueno 

いくつかの異なる方法を試して、ここの他の投稿を読んでみましたが、うまくいきませんでした. 以下は、私が問題を抱えている例です。

$insertSQL = $db->prepare("INSERT INTO voting_poll (ipaddress, choice) 
    VALUES (':ipaddress', :value)");
    $insertSQL->bindParam(':ipaddress', getenv('REMOTE_ADDR'), PDO::PARAM_STR);
    $insertSQL->bindParam(':value', $_POST['radio'], PDO::PARAM_STR);
    $insertSQL->execute();

次のエラーが表示されます:パラメーター番号が無効です: バインドされた変数の数がトークンの数と一致しません

4

1 に答える 1

1
  1. パラメータを引用符で囲みません。クエリ内の引用符を削除し:ipaddressます。

  2. bindParam()パラメータを変数参照にバインドするため、変数とともに使用する必要があります。値 (たとえば、 のような関数からの戻り値getenv()) を使用する場合は、bindValue()代わりに使用します。

于 2013-02-08T05:18:59.560 に答える