0
我有點擔心我的一個mysql查詢...以下查詢接收變量$ DB_id ...如果具有該主鍵的行已經存在,查詢將執行更新。關於DUPLICATE KEY UPDATE ...與WHERE或subselection?
$this->db->query(" INSERT INTO modules_text
( module_id,
module_content,
module_index
)
VALUES ( '{$DB_id}',
'{$content['text']}',
'{$index}'
)
ON DUPLICATE KEY
UPDATE module_content = '{$content['text']}',
module_index = '{$index}'
");
現在的事情關注我......如果受影響的行實際上屬於用戶,則沒有關係。我想向UPDATE部分添加一個where語句,或者首先對允許受到影響的行進行後續傳播。是這樣的:
[...]
ON DUPLICATE KEY
UPDATE module_content = '{$content['text']}',
module_index = '{$index}'
WHERE module_post_id = '{$post]}'
這在某種程度上可能...到現在爲止我沒有找到一個解決辦法...任何幫助將是非常讚賞...非常感謝!!!!!
Saludos Sacha!
我知道了......但是ID被客戶端傳遞......所以用戶可以嘗試修改這些鍵......在我的情況下,這在某種程度上是不安全的...... – Bosh 2010-12-20 10:53:32
@Bosh - 這不是MySQL的錯誤。如果您直接從查詢字符串傳入數據庫ID,那麼這就是您的設計缺陷。 (爲什麼不存儲一個獨特的文本模塊引用,並用它來代替?) – 2010-12-20 10:56:10
我知道;-)由於那個設計缺陷,我正在尋找一個解決方案;-)其實我已經混淆了ID已經使它更安全,但它不是一個由於性能,最強大的algorythms ...你是什麼意思與獨特的文本模塊參考...我GOOGLE了,但沒有找到axapnation ...謝謝你! – Bosh 2010-12-20 11:02:45