$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()的内容中,这段代码应该有效,但事实并非如此。

有帮助吗?

解决方案

在php.net上,我发现有人可能有同样的问题。他说的是可能发生的竞争状况: php .NET 。基本上他通过临时锁定表来解决这个问题,代价是放慢速度。

其他提示

要使found_rows()正常工作,需要

LIMIT

在查询结尾添加LIMIT,即

SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 0,10;

http://dev.mysql的.com / DOC / refman / 5.0 / EN /信息functions.html#function_found-行

FOUND_ROWS() - 对于带有LIMIT子句的SELECT,返回的行数没有LIMIT子句

我不确定你正在使用什么数据库,但看起来你正试图从mysql数据库中计算php中select语句中的行数。

您是否尝试过查看它是否适用于php中内置的mysql数据库函数?

$count_result = mysql_query("SELECT COUNT(*) as totalcount FROM users");
$row = mysql_fetch_array($count_result);

$total = $row['totalcount'];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top