私はアプリケーションのログイン(学校の仕事)に取り組んでおり、mysqliクラスを適切な方法で使用する方法を学んでいます。以下は、ユーザーが入力したユーザー名とパスワードが正しい(つまり、データベースに存在する)かどうかを確認するために使用される、私のアプリケーションの2つの方法です。
私の質問は、これが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
}
}