我有一个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';
答案 0 :(得分:11)
使用implode()
;
$ids = implode(',', $your_array);
答案 1 :(得分: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 (?, ?, ?, ?)