2016-11-22 32 views
0

我正在處理更新數據庫記錄的上傳圖像表單。邏輯是if (isset($valueofupload))然後更新記錄。Codeigniter 3.1 IFNULL和Coalesce不起作用?

我試着在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)); 
+0

如何不工作?請更具體一些。 – sepehr

+0

那麼$ arr_newname [0],$ row ['location_pic']和$ id的值是什麼? – TimBrownlaw

+0

if(isset($ value))然後更新。那是我想要的。但如果(isset)對我不好,因爲如果我有100場輸入表單,我需要ot if(isset)100次? – tuchawat

回答

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瞭解更多關於空COALESCE操作符(??):
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]); 

    // ... 
} 
+0

我知道isset,但對未來不好。如果我有100個字段,我需要如果isset 100字段 – tuchawat

+3

但是,您可以執行100個實際上不修改任何數據的mysql查詢嗎?順便說一句,在發出查詢之前,可以使用'foreach'循環遍歷字段名稱並檢查它們是否一次設置。 – sepehr