【发布时间】:2015-06-17 21:51:35
【问题描述】:
我在 Mysql SELECT 语句中使用SQL_CALC_FOUND_ROWS 来获取我的 SELECT 在没有 LIMIT 子句的情况下返回的行数。
$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]);
在我的 WinXP 开发站上,它在几周内每次都返回 3/0。当我从我的站使用另一个 MySQL 服务器时,它也返回 3/0。 在另一台 PC 上,相同的代码运行良好,并返回正确的数字(例如,如果我在 mysql.db 表中有 17 条记录,则为 3/17)。每台 XP PC 都有相同的 PHP/Mysql 版本,过去在我的 PC 上运行良好 将 Mysql Query Browser 与相同的 SQL 查询一起使用,我得到了正确的数字。
谁能给我一个解决方案的想法,而无需重新安装所有?
抱歉,我之前的请求非常不清楚。
【问题讨论】:
-
你能包含你的PHP代码吗?您确定要使用与用于查询的数据库连接资源相同的数据库连接资源来请求计数吗?
-
您的问题缺少产生的错误和您正在使用的代码,不赞成。
-
@PaulDixon 谢谢保罗!在我们的 .net 代码中,我们总是在创建新的连接,所以我一看到您的评论,就知道这一定是我的问题。
-
@JasonFuller - 可能想要解决这个问题。每个查询的新连接都非常昂贵。