我有一個奇怪的問題,也許我只是不明白的Active Record是如何工作做得不夠好,但在這裏它是。我試圖用特定的ID更新記錄。爲了簡單和測試,我只是直接提供id而不是變量。現在更新使用Active Record的CI中
,如果我理解正確的活動記錄,它似乎從我所用的實體框架ORM什麼我已經習慣了在Asp.Net非常不同的方式工作。但據我瞭解,您可以先在一行中選擇記錄,然後當您在下一行中運行更新時,該特定記錄將被更新。至少這是它在文檔中的外觀。下面是從文檔的例子:
$data = array(
'title' => $title,
'name' => $name,
'date' => $date
);
$this->db->where('id', $id);
$this->db->update('mytable', $data);
所以,我想在我的代碼做同樣的事情:
$updateData = array(
'description' => 'My localhost'
);
$this->myDb->where('id', 2832);
$this->db->update('Users', $updateData);
嗯,因爲在所有的預期,沒有工作!它確實更新了數據庫,但它更新了每條記錄,以便所有記錄都將描述字段更新爲「我的本地主機」!我仍然只使用一個測試數據庫好事......
我在文檔中看到有另一種方式中,通過在更新語句供應ID:
$this->db->update('Users', $updateData, array('id' => 2832));
這個工作好,好極了。但是...我還是想知道爲什麼第一種選擇沒有工作,因爲如果我不明白這一點,我可能使數據庫中的其他破壞性的錯誤......
我真的很感激就如何澄清這是有效的,爲什麼所有記錄都被更新了。
好吧,愚蠢的錯誤...謝謝! – Anders