我想知道在codeigniter中編寫數據庫(mysql)查詢的最佳做法是什麼。我看到了很多不同的方式,但是很困惑,最好的做法是什麼。在codeigniter中編寫查詢的最佳做法
以下是一些方法我已經通過
方法1種
$this -> db -> select('id, username, password');
$this -> db -> from('users');
$this -> db -> where('username = ' . "'" . $username . "'");
$this -> db -> where('password = ' . "'" . MD5($password) . "'");
$this -> db -> limit(1);
方法消失了2
$query = $this->db->query("select * from user where username = '$uname' and password = '$pass'");
方法3(寫入的存儲過程)
$query = "call authenticateuser(" . $this->db->escape($parameters['username']) . ", '" . sha1($parameters['password']) . "')";
有威力可能有許多其他方法,但想知道什麼是編寫查詢的最佳方式,因此如果有人可以提出建議,這將非常有幫助。
活動記錄是最好的做法。 – Vamsi
上述所有方法的問題在於它們對SQL注入開放。你應該真的使用可用的參數,並像這樣編寫你的WHERE函數:$ this - > db - > where('username',$ username);'。哪一個會自動爲你排除字符串。 – Jeemusu
注意:小心。 Codeigniter使用舊的'mysql_ *'函數進行轉義,而這正在棄用。即使您使用的是codeigniter,也請將默認驅動程序更改爲pdo。 – itachi