PDO を使用して WHERE IN 句のパラメータをバインドできない
コードは PDO を使用して WHERE IN 句のパラメータをバインドしようとしていますが、一貫してカウント 1 が返されます。パラメータ化された値を変数自体に置き換えると、正確なカウントが得られます。この矛盾は、PDO が IN 句のパラメータを効果的にバインドできないために発生します。
指定された配列はカンマ区切りの文字列に分解され、パラメータ値として割り当てられます。ただし、データベースは、
SELECT foo FROM bar WHERE ids IN ('1,2,3')
を使用する場合と同様に、この文字列を単一の値として解釈します。複数の値が存在するにもかかわらず、データベースはそれを単一の文字列として扱います。この問題を解決するには、クエリに IN リストを手動で挿入する必要があります。
'SELECT foo FROM bar WHERE ids IN (' . $myArray .')'
この方法により、各配列要素が IN 句に適切に含まれるようになります。残念ながら、現時点では、PDO を使用して WHERE IN 句内のパラメータをバインドするための他の実行可能な解決策はありません。
以上がPDO が WHERE IN 句のパラメータのバインドに失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。