タイトルの通りPHPの配列をSQLのWHERE句で指定できる形に成型
以下の形でSQLを実行したい。
sql
SELECT * FROM test WHERE id IN ("A001", "A002, "A003");
phpで配列形式になっているidを上記SQLの形に成型したい。
以下で、できた。
implode
の第一引数の', '
をつなぎ文字として、第二引数の$ids
の要素をつなぎ合わせて成型。
php
$ids = array("A001", "A002", "A003");
if ($ids) {
$whereIds = "AND id IN ('".implode("', '", $ids)."')";
} else {
$whereIds = "";
}
$sql = "
SELECT * FROM
tset
WHERE 1=1
{$whereIds}
";
使用しているDBがPostgresSQLなので、従来使用していたMySQLとクォーテーションの扱いが変わり、
文字列はシングルクォーテーションで囲むことになっているので以下ではダメ
php
'AND id IN("'.implode('","',$ids).'")'; // PostgresSQLだと構文NG
意外と同じSQLだと思って甘く見てたらちょこちょこ相違点があることに気づいた日でした。