gpt4 book ai didi

php - 计算mysql查询

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:28 27 4
gpt4 key购买 nike

我有以下代码


$result = $handle->select()->from('store_products_id', array('count'=>'COUNT(store_products_id.product_id)'))
->where('store_products_id.store_id=?', $this->store_id)
->columns($selectColumns)
->join('product_quickinfo', 'store_products_id.product_id =
product_quickinfo.product_id')

->join('image_paths', 'product_quickinfo.image_id =
image_paths.image_id')

->order('product_quickinfo.date_created DESC')
->limitPage($this->page_number, $this->sum_each_page)
->query(ZEND_DB::FETCH_OBJ);

但是,我只得到一个结果。看一下 print_r:


Array ( [0] => stdClass Object ( [count] => 14 [small_path] => 1 [product_name] => v evrecvrv [price] => 22 [product_id] => 1 [image_id] => 1 [date_created] => 0000-00-00 00:00:00 [large_path] => [description] => ) )

当我移除 COUNT Controller 时,我会取回所有项目。我怎样才能既计算整个查询(超出我施加的 LIMIT)又取回整个查询?

谢谢。

最佳答案

从 MySQL 4.0.0 开始,您可以在查询中使用 SQL_CALC_FOUND_ROWS,这将告诉 MySQL 计算总行数,而忽略 LIMIT 子句。您仍然需要执行第二个查询以检索行数,但这是一个仅检索存储的行数的简单查询。

使用非常简单。在您的主查询中,您需要在 SELECT 之后添加 SQL_CALC_FOUND_ROWS 选项,而在第二个查询中,您需要使用 FOUND_ROWS() 函数来获取总行数。查询看起来像这样:

SELECT SQL_CALC_FOUND_ROWS name, email 
FROM users
WHERE name LIKE 'a%'
LIMIT 10;

SELECT FOUND_ROWS();

唯一的限制是您必须在第一个查询之后立即调用第二个查询,因为 SQL_CALC_FOUND_ROWS 不会在任何地方保存行数。

(复制自this post)

关于php - 计算mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/998255/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com