MySQL 如何将 FOUND_ROWS() 存储在 PHP 变量中

eme*_*his 3 php mysql sql wordpress

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

他们举了这个例子:

SELECT SQL_CALC_FOUND_ROWS something FROM your_table WHERE whatever;
SELECT FOUND_ROWS( ) ;
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚的是如何将第二个值从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();" );
Run Code Online (Sandbox Code Playgroud)

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

我也试过这个:

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

...但它完全失败了。

我究竟做错了什么?

hak*_*kre 5

如果这是 Wordpress,您可以对第二个语句进行替代,否则您需要的是一个数组而不是数字:

$count = $wpdb->get_var('SELECT FOUND_ROWS()');
Run Code Online (Sandbox Code Playgroud)

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

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

  • $wpdb->show_errors = true如果WP_DEBUG设置为,则自动显示错误true。(参考