使用MySQL从数据库表中选择大量行

时间:2010-06-28 01:40:27

标签: php sql mysql

我有一个包含如下属性的表:

likes(id, message, ip, time)

id是主键,是自动递增的。我想要做的是根据我提供的ID从此表中选择30行。

我可以构建一个随机数组,包含我想要从表中获取的所有ID,现在我只需要这样做。我通常的SQL查询是:

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

但我需要选择30行。我有两种方法可以做到这一点,我可以使用带有30个查询的FOR循环,或者将它们全部组合成一个查询并同时抓取它们。显然我想做后者。

有人可以帮我解决SQL查询,以便一次从我的数据库表中获取多行吗?也许是一个如何将这些解析成数组以便于检索的例子?

非常感谢,谢谢。

2 个答案:

答案 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/>";
}