如标题中所述,我需要五个查询,返回最近日期为第1-5天的行的ID。
表:电影
id releasedate
232143 2013-06-20
536523 2013-07-20
453554 2013-08-20
098776 2013-09-20
549302 2013-10-20
,即第一个查询将返回id 549302
我认为这适用于第一个查询:
$first = $db->query("SELECT id, FROM film WHERE MAX(releasedate)" );
PS:很抱歉这篇文章格式不佳,有谁能告诉我如何正确显示表格?
我需要在网页的不同位置显示每个ID。简单地返回一个id列表就不够了。我真正需要的是将每个id封装到一个唯一的变量中,这样我就可以在网页的不同位置调用它们。
答案 0 :(得分:1)
不,你不需要五个查询。
$first = $db->query("SELECT `id` FROM `film` ORDER BY `releasedate` DESC LIMIT 5" );
这将从您桌上五部最新电影的数据库中获取ID。
要访问其中的每一个,只需运行while
循环。
while($row = $first->fetch_assoc()) {
$row['id']; # Each ID will be available like this.
}
答案 1 :(得分:0)
如果您确实需要在单独的查询中执行此操作,则可以使用LIMIT
子句的双参数形式,即LIMIT offset, count
。要获得最新电影,请使用
SELECT id FROM film ORDER BY releasedate DESC LIMIT 0, 1
要获得第二部最新影片,请使用
SELECT id FROM film ORDER BY releasedate DESC LIMIT 1, 1
下一个是
SELECT id FROM film ORDER BY releasedate DESC LIMIT 2, 1
等等。
但是用
将它们全部放在一个查询中应该会更好SELECT id FROM film ORDER BY releasedate DESC LIMIT 5
然后,您可以将它们全部保存在数组中:
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$ids[] = $row['id'];
}
然后,您可以使用$ids[0]
显示最近的电影,$ids[1]
显示最近的第二部电影,依此类推。