【发布时间】:2012-09-02 09:05:58
【问题描述】:
我有两个表格,帖子和部分。我想获得最后 10 个帖子 WHERE section = 1, 但在不同的地方使用 10 个结果。我做一个函数:
function sectionposts($section_id){
mysql_set_charset('utf8');
$maxpost1 ="SELECT max(id) from posts WHERE section_id = $section_id ORDER BY ID DESC LIMIT 20";
$maxpost12 =mysql_query($maxpost1);
while ($maxpost_rows = mysql_fetch_array($maxpost12 ,MYSQL_BOTH)){
$maxpost2 = $maxpost_rows[0];
}
$query = "SELECT * FROM posts WHERE id = $maxpost2";
$query2 = mysql_query($query);
return $query2;
}
$query2 = sectionposts(6);
while ($rows = mysql_fetch_array($query2)){
echo $rows['title'] . "<br/>" . "<br/>";
echo $rows['id'] . "<br/>" . "<br/>";
echo $rows['image_section'] . "<br/>";
echo $rows['subject'] . "<br/>";
echo $rows['image_post'] . "<br/>";
}
这十个结果怎么能在不同的地方使用,并保持从一到十排列。
这是旧案例,我解决了,但我发现了另一个问题,如果客户删除了一个 id = 800 的帖子“所以 DB 中没有 id = 800”,所以当我得到最大 id减去$NUM,并且这个操作必须等于id = 800,所以我这里有一个编程错误,我该如何处理这样的事情。
function getmax_id_with_minus ($minus){
mysql_set_charset('utf8');
$maxid ="SELECT max(id) FROM posts";
$maxid1 =mysql_query($maxid);
while ($maxid_row = mysql_fetch_array($maxid1)){
$maxid_id = $maxid_row['0'];
$maxid_minus = $maxid_id - $minus;
}
$selectedpost1 = "SELECT * FROM posts WHERE id = $maxid_minus";
$query_selectedpost =mysql_query($selectedpost1);
return ($query_selectedpost);
}
<?php
$ss = getmax_id_with_minus (8);
while ($rows = mysql_fetch_assoc($ss)){
$main_post_1 = $rows;
?>
无论如何“真的”再次感谢:)!
【问题讨论】:
-
你为什么使用
mysql_query? -
你有一些货物狂热的节目。您的 max() 查询只能返回一行,因为您没有使用 group-by 子句。因此,您的 while() 循环来获取结果是没有意义的。同样,代码很活泼 - 在您执行 max() 查询然后获取实际的最大记录之间,可以将另一条记录插入到数据库中。同样在 while 循环中显示结果 - 除非您出现多个重复的 ID,否则您只会得到一行,从而使 while() 循环毫无意义。
标签: php mysql arrays limit fetch