我希望有人能帮助我在这...如何通过PHP循环遍历MySQL结果?
这里是我的查询:
$query_articles = mysql_query("SELECT * FROM articles ORDER BY article_date DESC LIMIT 30") or die(mysql_error());
$row_articles = mysql_fetch_assoc($query_articles);
我想这样做是显示所有30个结果,但我想它是这样:
// Show article #1
// Then loop through articles 2-7
// Then show article #8
// Then loop through articles 9-30
原因是因为我对上面列出的每组都有不同的格式。我可以很容易地做单独的查询,但这不是很理想,再加上之后我的分页会搞砸。
那么,我将如何做这些循环与一个查询?任何帮助,将不胜感激!谢谢。
///// UPDATE /////
好吧,这是我现在已经和它给了我正是我想要的,但它也显示31-42行(甚至不现在在我的数据库中):
任何想法为什么它显示额外的行?另外,如果我用mysql_fetch_array,它上升到排55
///// UPDATE /////
这里是我最后的代码,如果任何人都需要它。我还添加了另一个条件,因为我也想分开9-30行。
$query_articles = mysql_query("SELECT * FROM articles ORDER BY article_date DESC LIMIT 32") or die(mysql_error());
$shown_articles = array(1, 8);
$article_range = range(9, 30);
$article_index = 1;
while($row_articles = mysql_fetch_assoc($query_articles)) {
if (in_array($article_index, $shown_articles)) {
echo '<p>'.$article_index.' ';
echo $row_articles['title'];
echo '</p>';
} elseif (in_array($article_index, $article_range)) {
echo '<p>'.$article_index.' ';
echo $row_articles['title'];
echo ' - 9-30</p>';
} else {
echo '<p>'.$article_index.' ';
echo $row_articles['title'];
echo ' - 2-7</p>';
}
$article_index++;
}
你是什么意思循环2-7和9-30?你想显示一个标题或关于它们的任何内容,或者只是完全跳过它们,只显示1和8? – akronymn
欢迎来到Stack Overflow!如果你可以避免它,请不要使用'mysql_ *'函数,它们不再被维护,并且社区已经开始[弃用过程](http://goo.gl/KJveJ)。相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你想学习,[这里是一个很好的PDO相关教程](http://goo.gl/vFWnC)。 – vascowhite
对不起,我应该更清楚。例如,我想显示标题。所以,$ row_articles ['标题']和其他东西。 – Ironank