У меня есть таблица с такими атрибутами:
likes(id, message, ip, time)
id
является первичным ключом и автоматически увеличивается. Whet, который я хочу сделать, это выбрать 30 строк из этой таблицы на основе идентификатора, который я предоставляю.
Я могу создать случайный массив всех идентификаторов, которые я хочу извлечь из таблицы, теперь мне просто нужно это делать. Мой обычный SQL-запрос:
SELECT message FROM `likes` WHERE id=$id LIMIT 1
Но мне нужно выбрать 30 строк. Есть два способа сделать это, я могу либо использовать цикл FOR с 30 запросами, либо объединить все это в один запрос и одновременно захватить их все. Очевидно, я бы хотел сделать последнее.
Может ли кто-нибудь помочь мне в SQL-запросе использовать, чтобы захватить несколько строк из моей таблицы базы данных сразу? И, возможно, пример того, как я буду разбирать их в массив для легкого извлечения?
Большое спасибо, спасибо.
Вы можете использовать оператор IN , поэтому это будет примерно так:
SELECT message FROM likes WHERE id IN (1, 2, 3, 4, 5, ...)
$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/>"; }