3

我试图在限制查询之前获取查询返回的总行数。我正在尝试使用此处找到的建议,该建议使用:SQL_CALC_FOUND_ROWS然后FOUND_ROWS()在第二个查询中使用;

他们举了这个例子:

SELECT SQL_CALC_FOUND_ROWS something FROM your_table WHERE whatever;
SELECT FOUND_ROWS( ) ;

我不知道如何将第二个值从FOUND_ROWS()PHP 变量中捕获。我在 Wordpress 中工作,所以我使用全局 $wpdb 来处理 MySQL 交互。这是我正在尝试的简化版本:

$rows = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS something FROM your_table WHERE whatever;" );
$count = $wpdb->get_results( "SELECT FOUND_ROWS();" );

第一个查询有效,但 $count 始终为空。如果我在 phpMyAdmin 中同时运行它们,则查询运行不会出错。

我也试过这个:

$rows = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS something FROM your_table WHERE whatever;
SET @count = FOUND_ROWS();" );

...但它完全失败了。

我究竟做错了什么?

4

3 回答 3

5

如果这是 Wordpress,您可以为第二个语句做替代,否则您要求的是一个数组而不是数字:

$count = $wpdb->get_var('SELECT FOUND_ROWS()');

还要注意,由于过滤器,wordpress 的数据库类对任何查询的更改都是开放的,并且默认情况下会抑制错误,执行查询并从结果集中获取。

您应该启用尖叫以查看是否遇到特定错误。

  • $wpdb->show_errors = true自动显示错误,如果WP_DEBUG设置为true. (参考
于 2013-01-06T01:55:13.863 回答
0

简单的。用这个:

SELECT FOUND_ROWS() as total;

并在 PHP 中获取它:

echo $query[0]->total;
于 2014-01-03T12:03:17.850 回答
0

试试这个:

SELECT count(1) AS rowcount
FROM table
于 2018-08-16T16:15:18.273 回答