tbl.".invoiceNumber = '".substr($searchFor,3-6ren">
gpt4 book ai didi

php - CodeIgniter - 绑定(bind)一个 EXIST 子查询

转载 作者:行者123 更新时间:2023-11-30 22:06:19 25 4
gpt4 key购买 nike

首先,我是这个框架的新手。检查我尝试使用 CI 数据库对象转录的查询。

$where = "(".$this->tbl.".invoiceNumber = '".substr($searchFor,3)."' 
OR EXISTS (SELECT 1 FROM op_orders_products WHERE idProduct = ".(is_numeric(substr($searchFor,3)) ? substr($searchFor,3) : '-1')."
AND idOrder = ".$this->tbl.".id)
)";

我应该做一个单独的子查询吗?想把它们合二为一。

我就是这样开始的。我想确保变量已绑定(bind),而不是像在原始查询中那样作为字符串传递。

$this->db->group_start()
->where($this->tbl.".invoiceNumber", substr($searchFor, 3))
->or_group_start()
// I'm missing this EXISTS select subquery
->group_end()
->group_end()

非常感谢您的帮助。

最佳答案

据我所知,在 Codeigniter 的查询生成器类中没有 EXISTS 等效项。所以我会这样写:

$this->db->group_start()
->where($where)
->group_end()

参见文档 here

binding:

使用 CodeIgniter,您可以像这样将变量绑定(bind)到您的查询:

$sql = "SELECT * FROM table WHERE a= ? AND b= ?";
$query = $this->db->query($sql, array($a,$b));

这会将变量 $a 和 $b 绑定(bind)到查询字符串中的相应位置 (?)。

escaping

$this->db->escape()

此函数转义字符串数据并在其周围添加单引号。

关于php - CodeIgniter - 绑定(bind)一个 EXIST 子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41621860/

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