0

そのため、私はこの問題に対する答えを何年も探していましたが、解決策を見つけることができません。

エラーは次のとおりです。

Invalid parameter number: number of bound variables does not match number of tokens

もちろん、このエラーが何を意味するかはわかっていますが、何かを一重引用符で囲んだ場合にのみ実際にスローされる理由がわかりません。

これが私のコードです:

$query = "UPDATE $DbTableName SET name=':name' WHERE id=:Id";
$result = $dbc->prepare($query); //Prepare query

$values = array('Id' => $Id, 'name' => $name); //Prepare values
$result->execute($values); //Execute Query

:name を一重引用符で囲んでください。

これらの引用符を削除すると、PDO エラーは発生しませんが、文字列を単一引用符で囲む必要があるため、MySQL エラーが発生します..

どうすればこれを回避できますか?

名前を引用符なしで bob に設定すると、MySQL エラーが発生します。

#1054 - Unknown column 'bob' in 'field list'

前もって感謝します

4

2 に答える 2

0

これは完全に書き直された答えです。私は最初、他の回答の理由にだまされ、質問自体に適切な注意を払いませんでした。

だからここに簡単な答えがあります:

何かを一重引用符で囲んだ場合にのみ実際にスローされる理由がわかりません。

文字列内でプレースホルダーを使用できないためです。プレースホルダーは、完全なデータ リテラルのみを表すことができます。

于 2013-02-02T05:19:17.913 に答える