Выбор большого количества строк из таблицы базы данных с MySQL

0

У меня есть таблица с такими атрибутами:

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 из этой строки. Пример, который я использовал, был моим примером получения ОДНОЙ строки из таблицы :)
Теги:

2 ответа

8

Вы можете использовать оператор IN, так что это будет примерно так:

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;
}

Дает вам массив, $results, отсортированный по ключу ['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
    Спасибо, лицо .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню