2009-06-20 53 views
2
$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包含其中的所有用户行。FOUND_ROWS()总是返回0

ini_set("mysql.trace_mode", "0"); 

我在这里找到了一个类似的Q,但它没有解决我的问题。

当我在MySQL客户端中使用2条select语句时,它总是输出正确的计数。只是似乎无法弄清楚如何让它在我的PHP页面上工作。

PHP版本:5.2.5构建6 的MySQL版本:5.1.30

注:我这里提供的代码没有被我的实际项目中使用,然而,它确实例证我与遇到的问题无法检索总数。从我读过的有关found_rows()的代码中,该代码应该可以工作,但不会。

+0

@Seth:您是否尝试添加LIMIT子句? – gahooa 2009-06-20 16:23:12

+0

ini_set(“mysql.trace_mode”,“0”);解决我的问题。感谢您的问题:) – 2012-03-14 12:54:56

回答

1

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

-3

我不确定你正在使用哪个数据库库,但它看起来像你试图从MySQL数据库中的PHP中选择语句中的行数。

你有没有试过看过,如果它在PHP中内置的mysql数据库函数的作品?

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

$total = $row['totalcount']; 
+0

-1:不回答关于LIMIT的原始问题,并且FOUND_ROWS() – gahooa 2009-06-20 02:22:12