PDO を使用して、特定の行を選択するために FIND_IN_SET に依存するクエリを作成しています。セットの要素は POST 経由でサーバーに渡され、クエリは次のように構築されます。
SELECT * FROM table WHERE
(FIND_IN_SET('param1', column) > 0 OR FIND_IN_SET('param2', column) > 0)
これが基本的な方法で、クエリがどのように構築されるかです。セット内で検索するパラメーターの数は動的であるため、クエリの FIND_IN_SET 部分は動的に作成されます。
$q = implode("', column)>0 OR FIND_IN_SET('", $array);
そして、次のようなクエリに適用されます。
SELECT * FROM table WHERE
AND (FIND_IN_SET(:q, e.event_type)>0);
そして、クエリは最終的に次のように実行されました。
$countResult->execute(array(':q' => $q);
$q は次の形式を取る場合があることに注意してください。
"param1', column)>0 OR FIND_IN_SET('param2', column)>0 OR FIND_IN_SET('param3"
PDO を使用しない場合、クエリは正しく実行されますが、PDO を使用すると、配列に要素が 1 つしかない場合にクエリが機能しますが、配列に複数の要素が含まれている場合は結果が返されません。
実行メソッドがパラメーターに対して何かをしている可能性はありますか?