2011-12-24 49 views
0

我發現我需要編寫查詢,而無需使用CI的活動記錄頻繁,例如:未使用CI活動記錄錯誤?

$query = "INSERT INTO votes (userid, itemId) VALUES ({$userId},{$itemId}) 
         ON DUPLICATE KEY UPDATE weight = {$vote}"; 

$query = $this->db->query($query); 

我應該擔心,因爲這種性能或安全性的損失?

+0

您應該擔心可移植性ON DUPLICATE KEY是MySQL特有的功能,它不適用於任何其他RDBM。 – RageZ

+0

由於您沒有顯示如何保護您的聲明,因此我們無法確定其安全損失。性能明智,它可能會稍微快一些,因爲它不需要通過構建器(CI的AR不是一個AR,但是查詢生成器) – Gordon

+0

@Gordon更新了問題以顯示我如何查詢。 –

回答

4

您可以使用查詢綁定,您可以享受安全性帶來的靈活性。但你以後我不能切換數據庫。

http://codeigniter.com/user_guide/database/queries.html

實施例:

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; 

$this->db->query($sql, array(3, 'live', 'Rick')); 

使用結合的第二個好處是這些值是 自動轉義,生產出更安全的查詢。你不必 記得手動轉義數據;發動機自動爲你做 。