У меня есть таблица с такими атрибутами:
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/>";
}
$ids = array(1,2,3,...);
,
id=$id
потому что тогда вы получите 30 из той же строки. Если только ты этого не хочешь?message
из этой строки. Пример, который я использовал, был моим примером получения ОДНОЙ строки из таблицы :)