0
我正在爲應用程序(學校作品)登錄,我正在學習如何以正確的方式使用mysqli類。以下是我的應用程序中用於檢查用戶輸入的用戶名和密碼是否正確(即存在於數據庫中)的兩種方法。正確使用bind_param?
我的問題是,如果這是使用bind_param的正確方法,或者它甚至可能是「矯枉過正」以用於此目的?可以/應該以另一種方式來完成嗎?
從LoginModel.php
public function DoLogin($username, $password){
$query = "SELECT * FROM Users WHERE username=? AND password=?";
$stmt = $this->m_db->Prepare($query);
$stmt->bind_param("ss", $username, $password);
$ret = $this->m_db->CheckUser($stmt);
return $ret;
}
從database.php中
public function CheckUser($stmt) {
if ($stmt->execute() == false) {
throw new \Exception($this->mysqli->error);
}
$ret = 0;
// $field1 = id, $field2 = username, $field3 = password
if ($stmt->bind_result($field1, $field2, $field3) == FALSE) {
throw new \Exception($this->mysqli->error);
}
if ($stmt->fetch()) {
return true; // Match exists in db
} else {
return false; // Match doesn't exist in db
}
}
看起來不錯。 – Gordon
我會替換命名參數,而不是讓函數決定在哪裏放置變量 – Sammaye
@Sammaye mysqli不支持命名參數iirc。 – Gordon