php - CodeIgniter 中 "same time"处的多次查询

标签 php codeigniter

我试图同时进行多个查询,这些查询是分段构建的(我无法更改它),问题是 codeigniter 会记住状态并尝试构建单个查询。

问题如下:

$queryA = $this->db->select("SELECT fieldA")
->from("tableA");

$queryB = $this->db->select("SELECT fieldB")
->from("tableB");

$queryC = $this->db->select("SELECT fieldC")
->from("tableC");

/* Group bys */
$queryA->group_by("groupbyfieldA");
$queryB->group_by("groupbyfieldB");

/* Limits */
$queryB->limit(10);
$queryC->limit(30);

$rA = $queryA->get()->result();
$rB = $queryB->get()->result();
$rC = $queryC->get()->result();


/* Desired output */
SELECT fieldA FROM tableA GROUP BY groupbyfieldA
SELECT fieldB FROM tableB GROUP BY groupbyfieldB LIMIT 10
SELECT fieldC FROM tableC LIMIT 30

/* CodeIgniter output :( */
SELECT fieldA, fieldB, fieldC FROM (tableA, tableB, tableC) GROUP BY groupbyfieldA, groupbyfieldB LIMIT ?

我找到的唯一解决方案是更改查询创建的流程,但 CodeIgniter 必须提供更简单的解决方案。无法避免 $ this-> db 记住之前的查询并且 $queryA, $queryB, $queryC 是唯一保存信息的?

非常感谢!

最佳答案

试试这样

 $resultA= $this->db->select("SELECT fieldA")
 ->from("tableA")->groupby()->get()->result();

 $resultB= $this->db->select("SELECT fieldB")
 ->from("tableB")->groupby()->get()->result();

 $resultC= $this->db->select("SELECT fieldC")
 ->from("tableC")->groupby()->get()->result();

“问题”是 $this->db codeigniter 每次使用同一个对象,并且每当您执行查询时都会获取所有值(每个 select()、groupby (),whatever()) 在该查询执行上,除非通过 get() 重置。

一种方法是执行每个查询,记住方法 get() 刷新对象 $this->db,并允许您执行任何其他查询你需要(它还释放该语句,如果我没记错的话,它会关闭数据库连接)。

好吧,为了获取结果,只需调用 result()result_array()row($someNumberForTheRow)

此外,如果您需要重置查询,可以使用reset_query()

Reference

关于php - CodeIgniter 中 "same time"处的多次查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50291944/

相关文章:

php - 多对多数据库架构

php - 在 Codeigniter 中调用 bool 上的成员函数 escape_str()

php - 如何使用 codeigniter 在 css 文件中设置 base_url(),以访问 css 文件中的 background_image_url?

codeigniter - 在 CodeIgniter 应用程序中创建 admin 文件夹

php - 爆炸的病态正则表达式(时间和内存)?

php - 添加搜索条件 PHP/MySQL

php - 在 PHP 中对流设置读取超时的规范方法是什么?

php - Codeigniter 从数据库填充表

php - 通过 PHP 使用 HTTP POST 发送 XML 数据

php - 无法验证 Adyen 的 SSL 证书。 Adyen 支付