2011-03-29 45 views
2

我有一個ID列表的表。我使用查詢來選擇它,然後將其作爲數組獲取(我知道如何做到這一點)。然後,我想從其他表中的ID中選擇更早獲取的數組中的行。從MySQL表中選擇行的值是數組?

我該怎麼做?提前致謝。

+0

的意思是...... – 2011-03-29 05:20:52

+0

你在找什麼? – Gowri 2011-03-29 05:22:41

回答

6

你很可能想要做一個WHERE field IN (...)類型的查詢。對於IN條款中列出的每個值,本質上相當於WHERE field=X or field=Y or field=Z or ...

既然你已經有了一個ID陣列已經,最簡單的方法就是建立這樣的查詢:

$where_in = implode(',', $ids_array); 

$query = "SELECT ... FROM yourtable WHERE idfield IN ($where_in);"; 

通常附帶條件適用 - 小心SQL注入漏洞,經常檢查查詢結果爲失敗等...

+1

不應該是'$ query =「SELECT ... FROM yourtable WHERE idfield IN(」。$ where_in。「)」;'? – ProblemsOfSumit 2013-10-24 13:44:46

+1

編號學習基本的PHP語法:http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double – 2013-10-24 15:02:35

1
select value1,value2 from table2 where id in (1,2,3,4,5) 
1

你可以避免這樣做,並考慮JOIN表。一個查詢將通過ID獲取匹配的記錄。

爲例

SELECT * FROM table1 t1 JOIN table2 t2 ON t1.ID=t2.ID 
3

你可以這樣做在一個查詢

像這樣 SELECT table2.id FROM table2 WHERE table2.id IN (SELECT table1.id FROM table1 WHERE blablabla)

0

假設$values是數組,你可以使用MySQL的IN關鍵字和PHP破滅函數來構造查詢

$sql = "SELECT a, b FROM table WHERE id IN (" . implode(", ",$values) . ")"; 

implode將加​​入數組元素使用「,」