2010-06-28 105 views
0

我有一個表,像這樣的屬性:選擇大量從數據庫表中的行與MySQL

likes(id, message, ip, time) 

id是主鍵是自動遞增。我想要做的是根據我提供的ID從這個表中選擇30行。

我可以構建一個隨機數組,我想從表中獲取所有ID,現在我只需要去做這件事。我通常的SQL查詢將是:

SELECT message 
FROM `likes` 
WHERE id=$id 
LIMIT 1 

但我需要選擇30行。有兩種方法可以做到這一點,我可以使用帶有30個查詢的FOR循環,或者將其全部組合成一個查詢並同時獲取所有查詢。顯然我想要做後者。

任何人都可以幫助我在SQL查詢中用來從我的數據庫表中同時獲取多個行嗎?也許我會如何解析這些數組以便於檢索的例子?

非常感謝,謝謝。

+0

我很困惑 - 30行受限於什麼?它不能被'id = $ id'限制,因爲那樣你會得到同一行的30。除非那是你想要的? – 2010-06-28 01:42:36

+0

那麼,我有我想要在數組中的行的所有ID。我想通過該數組中的所有這些ID並從該行獲取'message'屬性。我使用的例子是我從表中獲得一行的示例:) – 2010-06-28 01:43:45

回答

8

你可以使用IN operator,所以這將是這樣的:

SELECT message FROM likes WHERE id IN (1, 2, 3, 4, 5, ...) 
1
$ids = array(1,2,3,4,5,6,7,8,9); //or however many 
$query = "SELECT * FROM `likes` WHERE `id` IN (".implode(', ', $ids).")"; 
$res = mysql_query($query); 
$results = array(); 
while($tmp = mysql_fetch_array($res)) { 
    $results[$tmp['id'] = $tmp; 
} 

會給你一個數組,$結果,通過鍵[「身份證」]排序,各爲一每個答案鍵上的數組 - 'id','message','ip','time'。因此,例如:

for($results as $key => $val) { 
    echo "${val['ip']} posted {$var['message']} on {$val['time']} <br/>"; 
} 
+0

在PHP中,您使用'$ ids = array(1,2,3,...);'創建一個數組。 – 2010-06-28 02:00:30

+0

謝謝* facepalm *。 – zebediah49 2010-06-28 02:05:38