2013-10-08 44 views
1

我有一個包含一個數組的會話,並且該數組填充了id。從MySQL表中選擇與這些ID相對應的所有行的最佳方式是什麼?從MySQL表中選擇多行

所以,我需要這樣的東西:

SELECT * FROM table WHERE id = $_SESSION['ids'] 

很顯然,這是行不通的,因爲$ _SESSION [ 'IDS']是一個數組。

+0

你將不得不使用'IN()'的MySQL語法和循環通過你的ID到'IN()' – MonkeyZeus

+0

重複:http://stackoverflow.com/questions/9476146/mysql-php-select-where-id-array – cptnk

+0

爲IN使用數組,你首先需要打破字符串。對於find_in_set,這將不是必需的 – AdrianBR

回答

2

你可以使用SQL IN操作。 在這種情況下,您的查詢將看起來像

$sql = 'SELECT * FROM table WHERE id IN ("' . implode('","', $_SESSION['ids'] . '")'; 

此代碼將produse查詢類似以下內容:

SELECT * FROM table WHERE id IN ("1", "2", "foo"); 

希望它可以幫助

+0

如何用PDO做到這一點? – mandza

1

HI試試這個,

$var = $_SESSION['ids']; 

and then fire your query as 

$sql = SELECT * FROM table WHERE id = '$var'; 
3
 SELECT * 
    FROM 
     table 
    WHERE 
     find_in_set(id, $_SESSION['ids'])>0 
+0

我試着以下來測試你的方法:'$ _SESSION ['ids'] = array(1,2,3); $ db-> query('SELECT * FROM table WHERE find_in_set(id,$ _SESSION ['ids'])> 0');'它產生一個我無法修復的錯誤:'where子句中的列'Array' ' – joepd

+0

print $ _SESSION ['ids']; 在集合中找到它需要引用字符串的形式,如「1,2,3,4,5」。確保您以正確的格式迴應它。 – AdrianBR