プレースホルダーは引用できません。そのように簡単です:
SELECT ... WHERE foo = ?
SELECT ... WHERE foo = '?'
最初のものはプレースホルダーであり、期待どおりに機能します。もう1つは、文字「疑問符」に対する同等性のテストです。もうプレースホルダーではありません。
そして、?
の問題があります 正規表現のメタ文字でもあります。プレースホルダーを引用できる場合は、与えられます
SELECT ... WHERE foo REGEXP '^.?'
その?コード> クエリのプレースホルダーになりますか、それとも正規表現の「ゼロまたは1」の範囲演算子ですか?
正規表現でプレースホルダーを使用する場合は、正規表現パターンを「構築」する必要があります
SELECT ... WHERE foo REGEXP concat('^.', ?)
LIKE
を作成する必要があるのとまったく同じ方法 パターン:
SELECT ... WHERE foo LIKE '%?%' // wrong
SELECT ... WHERE foo LIKE concat('%', ?, '%') // right