SQL_CALC_FRED_ROWS/FIND_ROWS()在PHP中不工作,如何解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

我用SQL_CALC_FOUND_ROWS在MySQLSELECT语句中,要获得我的SELECT将返回的行数,不需要限制子句。

$sql = new mysqli('localhost', 'root', '');
$sql->select_db('mysql');
$s1 = $sql->query('select SQL_CALC_FOUND_ROWS * from db limit 0, 3');
$s2 = $sql->query('select FOUND_ROWS()');
if($row = $s2->fetch_row()) printf('%d/%d', $s1->num_rows, $row[0]);

在我的WinXPdev站点上,几个星期以来,它每次返回3/0。当我从我的站点使用另一个MySQL服务器时,它也会返回3/0。在其他PC上,相同的代码运行良好,并返回正确的数字(例如,如果mysql.db表中有17条记录,则返回3/17)。每台XP PC都有相同的PHP/MySQL版本,过去它在我的PC上运行良好,使用MySQL查询浏览器,我得到了正确的SQL查询。

有人能给我一个解决方案的主意吗?

提问于
用户回答回答于

作为一种“修复”,我们可以将其放入每个php页面(实际上,在一个常见的“包括”中):

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

或者将这个添加到htaccess:

php_value mysql.trace_mode "0"

用户回答回答于

例子:

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
    -> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();

扫码关注云+社区