Codeigniter 3.1 IFNULL和Coalesce不工作?

时间:2016-11-22 07:35:00

标签: php mysql codeigniter

我正在处理更新数据库记录的上传图片表单。逻辑为if (isset($valueofupload))然后更新记录。

我尝试在Codeigniter中使用IFNULLCOALESCE,但它无效。

以下是代码:

$row = $rs->row_array();

$sql = "UPDATE table
        SET location_pic = IFNULL(?, ?) WHERE event_id = ?"; 

$query = $this->db->query($sql, array($arr_newname['0'], $row['location_pic'], $id));

1 个答案:

答案 0 :(得分:0)

你的问题有点模糊。但根据我的理解,如果前者为空,您希望使用location_pic$arr_newname['0']更新某些事件记录的$row['location_pic']字段。为什么不试试这个呢?

  
$row = $rs->row_array();

$sql = "UPDATE table SET location_pic = ? WHERE event_id = ?"; 

$query = $this->db->query($sql, [
    $arr_newname['0'] ?? $row['location_pic'], 
    $id // Probably $row->id ?
]);

在PHP 7中阅读有关null coalesce operator(??)的更多信息:
https://secure.php.net/manual/en/migration70.new-features.php

或者,如果您想在设置$arr_newname['0']的情况下更新记录,为什么不:

if (isset($arr_newname['0'])) {
    // ...

    $sql = "UPDATE table SET location_pic = ? WHERE event_id = ?"; 

    $query = $this->db->query($sql, [$arr_newname['0'], $id]);

    // ...
}