当前位置: 首页 > 面试题库 >

SQL_CALC_FOUND_ROWS / FOUND_ROWS()在PHP中不起作用

易俊驰
2023-03-14
问题内容

SQL_CALC_FOUND_ROWS在Mysql SELECT语句中使用,以获得没有LIMIT子句的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]);

在我的WinXP开发站上,它在几周内每次都返回3/0。当我从工作站使用另一个MySQL服务器时,它也返回3/0。在另一台PC上,相同的代码运行良好,并返回正确的数字(例如,如果我在mysql.db表中有17条记录,则返回3/17)。每台XP
PC都具有相同的PHP / Mysql版本,过去在我的PC上运行良好,并且使用Mysql Query Browser和相同的SQL查询,我得到了正确的编号。

有人可以在不重新安装全部的情况下给我解决方案的想法吗?

抱歉,我之前的要求非常不清楚。


问题答案:

谢谢。

当我在mysql命令行上运行与您的示例类似的内容时,它将起作用。但是从php运行它失败。第二个查询必须“知道”第一个查询,因此我认为以某种方式将链接两个查询的持久性/内存弄乱了。

(事实证明Wordpress使用这种类型的查询进行分页-因此,我们更大的问题是当我们移至php
5.2.6时,wordpress安装中的分页突然停止了工作…最终将其跟踪到FOUND_ROWS( ))。

只是为了发布以便将来可能会遇到此问题的人发布…对我来说,它是php设置“ mysql.trace_mode”-在5.2.6中默认为“
on”,而不是以前的“ off”,并且由于某种原因使FOUND_ROWS()无法正常工作。

作为一个“修复”,我们可以将其放在每个php页面中(实际上,在一个通用的“ include”中):

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

或将其添加到.htaccess:

php_value mysql.trace_mode "0"

再次感谢,杰里



 类似资料:
  • 问题内容: 由于性能问题, 我尝试避免执行Count( )。 (即 从用户中 选择COUNT( )) 如果我在phpMyAdmin中运行以下命令,则可以: 它将返回行数。即用户数量。 但是,如果我在PHP中运行,则无法执行以下操作: 似乎PHP不希望传入两个查询。那么,我该怎么做呢? 问题答案: 仅在使用子句的情况下才有用,但仍想知道不使用会发现多少行。 考虑一下它是如何工作的: 您正在强制数据库

  • 正如所有评论我已经改变了我的代码。现在的事情是,当我运行我下面的PHP代码作为单独的文件它运行像魅力: $conn=new mysqli($主机名,$用户名,$密码,$数据库); 但是当我试图将其包含到html代码中时,它不起作用: $conn=new mysqli($主机名,$用户名,$密码,$数据库);

  • 我尝试使用post方法生成表单,我想检查字段是否用isset()填充。但即使字段为空,isset也会返回true。 下面是一个简化的代码:(页面名称:test.php,post方法指向自身) 当您提交时,它总是响应“字段集”,即使您没有在“测试”输入中输入任何内容。 谢谢你的回答!

  • 我已经开始学习laravel 5.4。为了填充我的db,我完成了BreedStableSeader。php文件。 然后我完成了DatabaseSeeder。php。 然后,我使用下面的命令调用数据库来为其设置种子。 $php artisan db:种子 但错误发生如下 *[ReflectionException]类别BreedStable播种机不存在* 当我使用, php artisan db:s

  • 我无法从使用$_files的html表单中获取输入类型文件值,isset($_files['name'])要从表单中获取上载的图像值,我在isset条件的第一行中放了一个回显“string”,但它没有显示它 PHP代码,我正在尝试为它获取文件输入值:

  • 问题内容: 单击提交时,此代码应打印在文本框name =“ ss”中输入的内容。 但是它不打印。使用method =“ get”但不使用post,这是什么问题。 问题答案: 如果您只是刷新页面,请执行以下操作: 代替: 另外,将其添加到第2行以查看$ _POST数组中存储了什么(如果有的话): 嗯…所以提交时是空的?尝试将其添加到您的php文件的顶部: 好的,现在检查您的php.ini(通常在/