gpt4 book ai didi

php - CodeIgniter Active Record集方法与MySQL函数SUBSTRING_INDEX

转载 作者:行者123 更新时间:2023-11-29 19:38:38 24 4
gpt4 key购买 nike

这是我正在运行的 MySQL 查询:

$this->db->query("UPDATE `ea_appointments` 
SET `id_services` = SUBSTRING_INDEX(`notes`, '|', -1),
`id_users_customer` = SUBSTRING_INDEX(SUBSTRING_INDEX(`notes`, '|', 2), '|', -1),
`hash` = MD5(`id_google_calendar`)
WHERE `is_unavailable`= 1 AND `notes` LIKE '%|%'");

这是我第一次尝试将其转换为 Codigniter 的 Activerecord/Query Builder 格式

$this->db->set("id_services","SUBSTRING_INDEX(notes, '|', -1)");
$this->db->set("id_users_customer","SUBSTRING_INDEX(SUBSTRING_INDEX(notes, '|', 2), '|', -1)");
$this->db->set("hash","MD5(id_google_calendar)");
$this->db->where("is_unavailable= 1");
$this->db->where("notes LIKE '%|%'");
$this->db->update("ea_appointments");

这看起来正确吗?问题是这样,它并没有在 MySQL 中的管道之间提取数据。我在 MySQL 中使用 SUBSTRING_INDEX,我应该使用 PHP 等效项吗?

最佳答案

在解决 CI 查询问题时,请确保在数据库设置中设置了 save_queries 选项(至少在开发中),然后使用 echo $this->db->last_query()。这是开始排除故障的好地方。

CI 逃逸可能会给您带来麻烦。尝试将转义设置为 FALSE。例如。

$this->db->set("id_services","SUBSTRING_INDEX(notes, '|', -1)",FALSE);

您可以在文档 here 中阅读相关内容.

此外,where 也存在问题。子句:

$this->db->where("is_unavailable= 1");
$this->db->where("notes LIKE '%|%'");

应该是:

$this->db->where("is_unavailable",1)
->like('notes','|');

如果您想使用单一评估,最好执行类似的操作

$this->db->where("is_unavailable= 1",NULL,FALSE);

关于php - CodeIgniter Active Record集方法与MySQL函数SUBSTRING_INDEX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41439545/

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