$result = $db_con->query("SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 0,10");
$count_result = $db_con->query("SELECT FOUND_ROWS() as totalcount");
$row = $count_result->fetch_assoc();
$total = $row['totalcount'];
即使$result中包含所有用户行,$total也始终返回0。
ini_set("mysql.trace_mode", "0");
我在这里通过搜索类似的Q找到了这个设置,但它没有解决我的问题。
当我在MySQL客户机中使用两个select语句时,它总是输出正确的计数。就是想不出怎么让它在我的php页面上工作。
PHP版本: 5.2.5 build 6 MySQL版本: 5.1.30
注意:我在这里提供的代码没有在我的实际项目中使用,但是,它确实举例说明了我无法检索总计数的问题。根据我所读到的关于found_rows()的内容,这段代码应该可以工作,但它不能。
发布于 2009-06-19 18:50:35
在php.net上,我发现有人可能也有同样的问题。他说的是一种可能发生的竞争条件:php.net。基本上,他通过临时锁定表来解决这个问题,代价是放慢速度。
发布于 2009-06-19 18:21:30
需要LIMIT
才能使found_rows()正常工作
在查询的末尾添加一个限制,即。
SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 0,10;
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
FOUND_ROWS()
--对于带有LIMIT子句的SELECT,如果没有LIMIT子句,则返回的行数
发布于 2009-06-19 18:20:57
我不确定您使用的是哪个数据库库,但看起来您正在尝试计算mysql数据库中php中select语句的行数。
你有没有试过在php中使用内置的mysql数据库函数?
$count_result = mysql_query("SELECT COUNT(*) as totalcount FROM users");
$row = mysql_fetch_array($count_result);
$total = $row['totalcount'];
https://stackoverflow.com/questions/1020745
复制相似问题