gpt4 book ai didi

php - 当 SQL 查询中包含括号时,为什么 CodeIgniter 不会返回结果?

转载 作者:行者123 更新时间:2023-11-29 14:44:36 25 4
gpt4 key购买 nike

当我构建的 SQL 查询在搜索值之一中包含括号时,我没有得到预期的结果。但是,如果我直接在数据库上运行查询,我会返回预期的结果。

此外,如果我的搜索不包含括号,它将正确返回预期结果。

CodeIgniter模型函数:

function get_submodels($params)
{
$sql = "SELECT DISTINCT(`a`.`submodel`), `a`.`model_id` FROM `models` AS `a`"
. "LEFT JOIN `manufacturers` AS `b` ON `a`.`manufacturer` = `b`.`manufacturer_id`"
. "WHERE `a`.`year` = ? AND `b`.`manufacturer` = ? AND `a`.`model` = ?"
. "ORDER BY `a`.`submodel` ASC;";

$query = $this->db->query($sql, $params);

return $query->result();
}

工作查询的示例:

"... WHERE `a`.`year` = '2007' AND `b`.`manufacturer` = 'CHEVROLET' AND `a`.`model` = 'MONTE CARLO'"

无效查询的示例:

"... WHERE `a`.`year` = '2007' AND `b`.`manufacturer` = 'MERCEDES BENZ' AND `a`.`model` = 'CLK350 (W209)'"

我已经使用了 $this->db->last_query() 并且查询格式正确。即使复制最后一个没有结果的查询并直接对数据库运行它也会得到预期的结果。

最佳答案

尽管运行 $this->db->last_query() 并看到查询正确,我还是决定在页面上启用分析。我的结果显示括号被编码为 HTML 实体。

因此,查询的形式如下:

"... WHERE `a`.`year` = '2007' AND `b`.`manufacturer` = 'MERCEDES BENZ' AND `a`.`model` = 'CLK350 (W209)'"

而不是这个:

"... WHERE `a`.`year` = '2007' AND `b`.`manufacturer` = 'MERCEDES BENZ' AND `a`.`model` = 'CLK350 (W209)'"

我通过修改插入查询以对这些列使用 htmlentities 并更新所有现有记录来解决此问题。虽然我知道 Codeigniter 会转义值,但我不知道它也会对它们进行编码。

关于php - 当 SQL 查询中包含括号时,为什么 CodeIgniter 不会返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7252952/

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