質問をよくお読みください。「私のコードが動かない!!!」というのは、いつもの愚かなことではありません。質問。
意図したエラーでこのコードを実行すると
try {
$sth = $dbh->prepare("SELECT id FROM users WHERE name INN(?,?) ");
$sth->execute(array("I'm","d'Artagnan"));
} catch (PDOException $e) {
echo $e->getMessage();
}
このエラーメッセージが表示されます
SQL 構文にエラーがあります... 1 行目の 'INN('I\'m','d\'Artagnan')' 付近
しかし、私は何年もの間、クエリとデータがサーバーに別々に送信され、決して干渉しないと考えていました。したがって、いくつか質問があります(ただし、誰も答えられなかったと思います...)
- 引用符で囲まれた、エスケープされた、おなじみの文字列表現はどこから得られるのでしょうか。エラーを報告するために特別に作成されたものですか、それとも実際のクエリの一部ですか?
- 実際にはどのように機能しますか?プレースホルダーをデータに置き換えますか?
- デバッグ目的で、クエリの一部だけでなく、クエリ全体を取得する方法はありますか?
アップデート
mysqli
期待どおりに実行します:エラーがスローされますnear 'INN(?,?)'