1

重複の可能性:
WHERE句で配列を使用するPHP / MYSQL

ID値が[1,5,2,6,7...]の配列があり、それをMySQL item_id IN(1,5,2,6,7 ...)ステートメントで使用して選択する必要があります。配列にリストされているIDを持つ行。$ arrIDをSQLクエリに挿入できるものに変換するにはどうすればよいですか?

EDIT-呼び出しのコンテキスト:

if(!IsNullOrEmptyString($_GET["view_playlist"])) {
        session_destroy();
    }
    $id_list = implode(",", $_SESSION("playlist"));
    $sql = 'SELECT t.track_id, t.track_title, t.track_num, al.album_title, g.genre_name, a.artist_name, t.length, t.track_rating '.
    'FROM track t, genre g, artist a, album al '.
    'WHERE t.track_id IN('.$id_list.' AND t.genre = g.genre_id AND t.artist = a.artist_id AND t.album = al.album_id';
4

2 に答える 2

11

使用implode();

$ids = implode(',', $your_array);
于 2012-04-30T15:43:08.250 に答える
1

PDOまたはmysqliを使用している場合(mysql_関数は時代遅れであり、放棄する必要があるため)、配列内の要素の数を使用してパラメーター化されたクエリを作成し?、あなたのSQL。

PDOの例を次に示します。

$ids = array(1, 2, 3, 4);

try {
    $dbh = new PDO("mysql:host=localhost;dbname=mydbname", 'username', 'password');
} catch(PDOException $e) {
    die($e->getMessage());
}

$inClause = trim(str_repeat('?, ', count($ids)), ', ');
$stm = $dbh->prepare('SELECT * FROM mytable WHERE id IN ('.$inClause.')');
$stm->execute($ids);

// resulting SQL: SELECT * FROM mytable WHERE id IN (?, ?, ?, ?)
于 2012-04-30T15:53:57.480 に答える