我有一个包含如下属性的表:
likes(id, message, ip, time)
id
是主键,是自动递增的。我想要做的是根据我提供的ID从此表中选择30行。
我可以构建一个随机数组,包含我想要从表中获取的所有ID,现在我只需要这样做。我通常的SQL查询是:
SELECT message
FROM `likes`
WHERE id=$id
LIMIT 1
但我需要选择30行。我有两种方法可以做到这一点,我可以使用带有30个查询的FOR循环,或者将它们全部组合成一个查询并同时抓取它们。显然我想做后者。
有人可以帮我解决SQL查询,以便一次从我的数据库表中获取多行吗?也许是一个如何将这些解析成数组以便于检索的例子?
非常感谢,谢谢。
答案 0 :(得分:8)
你可以使用IN operator,所以它会是这样的:
SELECT message FROM likes WHERE id IN (1, 2, 3, 4, 5, ...)
答案 1 :(得分: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/>";
}