2010-06-28 3 views
0

У меня есть таблица с атрибутами, как это:Выбор большого количества строк из таблицы базы данных с MySQL

likes(id, message, ip, time) 

id является первичным ключом и автоинкрементный. Whet, который я хочу сделать, это выбрать 30 строк из этой таблицы на основе идентификатора, который я предоставляю.

Я могу построить случайный массив всех идентификаторов, которые я хочу захватить из таблицы, теперь мне просто нужно это делать. Мой обычный SQL-запрос будет выглядеть так:

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

Но мне нужно выбрать 30 строк. Есть два способа сделать это, я могу либо использовать цикл FOR с 30 запросами, либо объединить все это в один запрос и одновременно захватить их все. Очевидно, я бы хотел сделать последнее.

Может ли кто-нибудь помочь мне в SQL-запросе, чтобы использовать для захвата нескольких строк из моей таблицы базы данных сразу? И, возможно, пример того, как я буду разбирать их в массив для легкого извлечения?

Большое спасибо, спасибо.

+0

Я в замешательстве - 30 строк ограничены чем? Его нельзя ограничить 'id = $ id', потому что тогда вы получите 30 из той же строки. Разве это не то, что вы хотите? –

+0

Нет, у меня есть все идентификаторы строк, которые я хочу в массиве. Я хочу пройти через все эти идентификаторы в этом массиве и получить атрибут 'message' из этой строки. Пример, который я использовал, был моим примером получения ОДНОЙ строки из таблицы :) –

ответ

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»], с каждый из которых является массив для каждого ключа ответа - '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, ...);'. –

+0

спасибо * лицоpalm *. – zebediah49

Смежные вопросы