LoginSignup
3
6

More than 5 years have passed since last update.

PHPの配列をSQLのWHERE句で指定

Posted at

タイトルの通り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だと思って甘く見てたらちょこちょこ相違点があることに気づいた日でした。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6