【发布时间】:2012-12-20 03:29:57
【问题描述】:
我试图在限制查询之前获取查询返回的总行数。我正在尝试使用找到的建议 here,它使用: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();" );
...但它完全失败了。
我做错了什么?
【问题讨论】:
-
你是否绑定了返回对象的实际值?你用的是什么 php mysql 类?。
-
你试过'SELECT SQL_CALC_FOUND_ROWS, FOUND_ROWS() AS NUMOFROWS something FROM your_table WHERE什么; '
-
$rows = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS something FROM your_table WHERE whatever; SELECT FOUND_ROWS();" );会给您带来错误吗? -
如何使用$wpdb->query() 来代替应该返回所选行的整数?
-
@32bitfloat:这行得通。好主意。如果我无法让 FOUNT_ROWS() 工作,这将作为备份。我怀疑应该稍微快一点,对吧?