Mac*_*Mac 6 php mysql count while-loop
当我试图计算表中的记录数时,即使SQL语句中有一个记录LIMIT,但总体来说它是有效的,但是有些奇怪的事情,代码:
$sql = "SELECT COUNT(*) AS count FROM posts
ORDER BY post_date DESC
LIMIT 5";
// ... mysql_query, etc
while($row = mysql_fetch_array($result))
{
// ... HTML elements, etc
echo $row['post_title'];
// ... HTML elements, etc
echo $row['count']; // this displays the number of posts (which shows "12").
}
Run Code Online (Sandbox Code Playgroud)
虽然,通过while循环显示时,它显示如下:
注意:未定义的索引:第55行的/Applications/MAMP/htdocs/blog/index.php中的post_title
如果我删除了COUNT(*) AS count,一切都会完美显示......它是怎么做到的?
irc*_*ell 15
不要COUNT(*)用来计算行数(由于很多原因).写出完整的查询,并在SQL_CALC_FOUND_ROWS之后添加SELECT:
SELECT SQL_CALC_FOUND_ROWS id, title FROM foo LIMIT 5;
Run Code Online (Sandbox Code Playgroud)
然后,执行该查询后(右后),运行:
SELECT FOUND_ROWS();
Run Code Online (Sandbox Code Playgroud)
SELECT如果你没有LIMIT最终的那些,那将返回原始返回的行数(计算所有连接和where子句).
它不是便携式的,但它非常有效(而且恕我直言,这是处理这类问题的正确方法).