【问题标题】:Codeigniter 4 query IF ISNULLCodeigniter 4 查询 IF ISNULL
【发布时间】:2022-01-11 13:16:44
【问题描述】:

我正在从 Codeigniter 3 迁移到 Codeigniter 4,下一个查询对我来说有问题。

在 Codeigniter 3 中,查询是:

$this->db->query("UPDATE myTable SET data = '$data', 
                    myData = IF ( ISNULL(myData), '$state', CONCAT('$state', '-', myData) ) 
                  WHERE id = '$id'");

我试图用下一个格式来改变它:

$data = array(
    'myData' => "IF( ISNULL(myData), " . $state. ", CONCAT(" . $state. ", '-', myData')")
);

但是,该函数会像字符串"IF( ISNULL(myData), " . stateOfExample. ", CONCAT(" . stateOfExample. ", '-', myData')" 一样更新$myData 的内容。

我查看了 CI4 文档,但找不到开发此查询的方法。 我找到了使用 where() CI 函数的方法,但我认为这不是最好的方法。

【问题讨论】:

    标签: php mysql codeigniter codeigniter-4


    【解决方案1】:

    如果您将 SQL 函数放入数据中,codeigniter 将无法理解这些是函数。它只是将它们添加为字符串。

    IFCONCATISNULL 放入 sql 中,并将数据数组仅用于变量。

    $this->db->query("UPDATE myTable SET data = ?, 
        myData = IF ( ISNULL(myData), ?, CONCAT(?, '-', myData) ) 
        WHERE id = ?", array($data, $state, $state, $id));
    

    【讨论】:

    • 这种结构在 Codeigniter 3 中工作,但正如我所说我正在迁移到 Codeigniter 4,这不遵循 Codeigniter 查询结构
    • 你这是什么意思?这是来自文档codeigniter.com/user_guide/database/queries.html#query-bindings
    • 你说得对,这是 CI4 中有效的查询结构,但它对我不起作用
    猜你喜欢
    • 2022-08-05
    • 2012-04-07
    • 2017-04-19
    • 2021-11-30
    • 2023-02-01
    • 2020-11-02
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多