标签: sql-calc-found-rows

如何在PHP中使用MySQL Found_Rows()?

由于性能问题,我尽量避免使用Count().(即SELECT COUNT()FROM Users)

如果我在phpMyAdmin中运行以下命令,则可以:

  SELECT SQL_CALC_FOUND_ROWS * FROM Users;
  SELECT FOUND_ROWS();
Run Code Online (Sandbox Code Playgroud)

它将返回行数#.即用户数量.

但是,如果我在PHP中运行,我不能这样做:

  $query = 'SELECT SQL_CALC_FOUND_ROWS * FROM Users;
    SELECT FOUND_ROWS(); ';
  mysql_query($query);
Run Code Online (Sandbox Code Playgroud)

似乎PHP不喜欢传入两个查询.那么,我该怎么做呢?

php mysql sql-calc-found-rows

23
推荐指数
3
解决办法
5万
查看次数

Mysql SQL_CALC_FOUND_ROWS和分页

所以我有一个有500多万行的表.当我使用SQL_CALC_FOUND_ROWS时,查询将永远挂起.当我拿出它时,查询会在一秒内执行LIMIT,25.我的问题是分页原因是否有替代获得总行数?

mysql pagination sql-calc-found-rows

12
推荐指数
2
解决办法
2万
查看次数

MySQL/PDO FOUND_ROWS()有时会错误地返回0

我们有一个laravel 4.1应用程序,曾经在PHP 5.4下运行,但是自从升级到5.6.13(今天到5.6.14)后,我注意到查询已经开始有时返回0 FOUND_ROWS().在我们的一些查询中,它似乎是间歇性的,但在其他问题上,它更像是一个永久性的问题.

受影响最大的集合是具有子查询的集合.

我们正在使用PDO(我们没有使用laravel模型,只是直接与其PDO对象进行交互).MySQL在这个时间框架内也没有被修改过.

尝试了所有种类 - 一个建议是将跟踪模式设置为0,但这并没有帮助.我尝试设置PDO::MYSQL_ATTR_USE_BUFFERED_QUERY为false,但是当您尝试选择时会导致PDO错误FOUND_ROWS()(现在无法获得确切的消息).

没有回到5.4(请上帝没有),我完全卡住了......

直接在MySQL中运行这些查询,然后运行FOUND_ROWS() 始终返回正确的结果.

php mysql pdo sql-calc-found-rows laravel-4

10
推荐指数
2
解决办法
891
查看次数

MySQLi/Prepared Statements&SQL_CALC_FOUND_ROWS

我目前正在探讨如何使用预准备语句实现SQL_CALC_FOUND_ROWS.

我正在写一个分页类,显然我想在查询中添加LIMIT,但也要查找总行数.

这是该课程的一个例子.

$query="select SQL_CALC_FOUND_ROWS id,title,location,salary,employer from jobs where region=38 limit 0,3";

if($stmt = $connection->prepare($query)) {
            $stmt->execute()or die($connection->error); //execute query
            $stmt->bind_result($id,$title,$location,$salary,$employer,$image);
            while($stmt->fetch()){
                $jobs[$x]['id']=$id;
                $jobs[$x]['title']=$title;
                $jobs[$x]['location']=$location;
                $jobs[$x]['salary']=$salary;
                $jobs[$x]['employer']=$employer;
                $jobs[$x]['image']=$image;
                $x++;
            }
            $stmt->close();//close statement
        }
Run Code Online (Sandbox Code Playgroud)

关于如何获取SQL_CALC_FOUND_ROWS实际值,我有点难过?我曾想过添加以下内容:

            $stmt->store_result();
            $count=$stmt->num_rows;
Run Code Online (Sandbox Code Playgroud)

但是这只给出了一个基于LIMIT的数字,所以在上面的例子中它应该是3而不是完整的6.

希望有道理.

mysqli prepared-statement sql-calc-found-rows

6
推荐指数
1
解决办法
2509
查看次数

如何禁用或绕过phpmyadmin的SQL_CALC_FOUND_ROWS

当你SELECT在幕后处理一个通过phpmyadmin时,它有时会添加一个LIMIT 0,30,和/或它会抛出一个SQL_CALC_FOUND_ROWS,SELECT所以它可以告诉我有多少结果没有LIMIT.

不幸的是,添加SQL_CALC_FOUND_ROWS有时需要的处理比我预期的要多得多(例如,比我运行原始的无问题查询更多).

是否有全局配置选项来禁用phpmyadmin对我的查询的修改?

我可以在每个查询的基础上使用哪些技巧来阻止phpmyadmin的修改?

mysql phpmyadmin sql-calc-found-rows

5
推荐指数
1
解决办法
2499
查看次数

为什么FOUND_ROWS()为5.7.17 SQL版本返回错误的结果?

我在本地系统上运行以下查询

SELECT FOUND_ROWS() FROM table_name LIMIT 1;
SQL Version : 5.6.16
Run Code Online (Sandbox Code Playgroud)

它返回行数.

当相同的查询在服务器上运行时(SQL版本:5.7.17),它返回0.

在互联网上搜索后,人们建议使用

SQL_CALC_FOUND_ROWS

所以我也在本地和服务器上使用以下查询.

SELECT SQL_CALC_FOUND_ROWS * FROM users
SELECT FOUND_ROWS();
Run Code Online (Sandbox Code Playgroud)

但结果是相同的,它在本地(SQL版本:5.8.16)上工作正常,并在服务器上返回0(SQL版本:5.7.17).

mysql sql sql-calc-found-rows

5
推荐指数
1
解决办法
573
查看次数

mySQL 中 FOUND_ROWS() 结果错误

我总共有6行。当我做一个查询(比如 SELECT * from table)时,我有

  • LIMIT 3 => FOUND_ROWS() 给出 3 => 3 行被检索
  • LIMIT 1, 3 => FOUND_ROWS() 给出 4 => 3 行被检索
  • LIMIT 2, 3 => FOUND_ROWS() 给出 5 => 3 行被检索
  • LIMIT 3, 3 => FOUND_ROWS() 给出 6 => 3 行被检索
  • LIMIT 4, 3 => FOUND_ROWS() 给出 6 => 2 行被检索

知道这种奇怪行为的原因是什么吗?

SQL查询

SELECT `places`.*, `category`.*, COUNT(places_reviews.place_id) AS num_reviews, (places_popularity.rating_1 + 2*places_popularity.rating_2 + 3*places_popularity.rating_3 + 4*places_popularity.rating_4 + 5*places_popularity.rating_5)/(places_popularity.rating_1 + places_popularity.rating_2 + places_popularity.rating_3 + places_popularity.rating_4 + places_popularity.rating_5) AS …
Run Code Online (Sandbox Code Playgroud)

php mysql sql sql-calc-found-rows

3
推荐指数
1
解决办法
4309
查看次数