$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'];
$ total保持返回0,即使$ result包含其中的所有用户行。
ini_set("mysql.trace_mode", "0");
我通过在这里搜索类似的问题找到了这个设置,但它没有解决我的问题。
当我在MySQL客户端中使用2个select语句时,它总是输出正确的计数。似乎无法弄清楚如何让它在我的php页面上运行。
PHP版本:5.2.5 build 6 MySQL版本:5.1.30
注意:我在这里提供的代码没有在我的实际项目中使用,但是,它确实例证了我无法检索总计数的问题。从我读过的关于found_rows()的内容中,这段代码应该有效,但事实并非如此。
答案 0 :(得分:1)
LIMIT
在查询结尾添加LIMIT,即
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子句
答案 1 :(得分:1)
在php.net上,我发现有人可能有同样的问题。他谈到可能发生的竞争状况:php.net。基本上他通过临时锁定表来解决这个问题,代价是放慢速度。
答案 2 :(得分:-3)
我不确定你正在使用什么数据库,但看起来你正试图从mysql数据库中计算php中select语句中的行数。
您是否尝试过查看它是否适用于php中内置的mysql数据库函数?
$count_result = mysql_query("SELECT COUNT(*) as totalcount FROM users");
$row = mysql_fetch_array($count_result);
$total = $row['totalcount'];