我正在为一个应用程序(学校工作)登录,我正在学习如何以正确的方式使用 mysqli 类。以下是我的应用程序中的两种方法,用于检查用户输入的用户名和密码是否正确(即数据库中存在)。
我的问题是,这是否是使用 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
}
}