我有 2 張桌子;db_file_acess and db_file_access_details. 我subjects_id在db_file_access_details表中有一個列。從 UI 中,我可以選擇幾個帶有其他詳細資訊的主題 [array] 并將它們插入到db_file_acess表中,并將 subject_ids插入到db_file_access_details. 插入沒問題,但是當我更新這兩個表時,我似乎無法更新所有行。這是我的更新查詢
$result = array();
foreach ($subject_id as $key => $val) {
$result[] = array(
'file_access_id' =>$q_id,
'subjects_id' => $_POST['subject_id'][$key]
);
}
$this->db->update_batch('db_file_access_details', $result, 'file_access_id');
查詢運行,但它只更新一個 id,如下面的螢屏截圖所示:

該result()陣列如下共享:
Array
(
[0] => Array
(
[file_access_id] => 45
[subjects_id] => 1
)
[1] => Array
(
[file_access_id] => 45
[subjects_id] => 3
)
[2] => Array
(
[file_access_id] => 45
[subjects_id] => 4
)
)
update_batch 查詢后,結果如下圖
我做錯了什么?
uj5u.com熱心網友回復:
根據檔案update_batch('db_file_access_details', $result, 'file_access_id')產生:
UPDATE `db_file_access_details` SET `subjects_id` = CASE
WHEN `file_access_id` = 45 THEN 1
WHEN `file_access_id` = 45 THEN 3
WHEN `file_access_id` = 45 THEN 4
ELSE `subjects_id` END
WHERE `file_access_id` IN (45, 45, 45)
對于所有三行,第一個 case 匹配,因此所有subject_ids 都設定為 1。
要使 update_batch 正常作業,您需要使用該id列。
根據您想要實作的目標,您還可以考慮洗掉file_access_idin 的所有行db_file_access_details,然后$result使用 insert_batch插入陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/406042.html
標籤:
上一篇:在高圖中回顯日期(dmY)
