プリペアドステートメントを使用してPHPでログインスクリプトをコーディングしていますが、それを機能させることができません。なぜこれが機能しないのかを誰かが指摘できますか?
ログインするたびに、「ステートメントが失敗しました!」というメッセージが表示されます。
//Start session
session_start();
//Include database connection details
require_once('config.php');
//Sanitize the POST values
$login = clean($_POST['login']);
$password = clean($_POST['password']);
$query = $dbconn -> prepare("SELECT * FROM members WHERE login=? AND passwd=?");
$query -> bind_param("ss", $login, $password);
if($query->execute() == true) {
$query -> bind_result($result);
$query -> fetch();
if($result){
$member = mysqli_fetch_assoc($result);
session_regenerate_id();
$_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
$_SESSION['SESS_FIRST_NAME'] = $member['firstname'];
$_SESSION['SESS_LAST_NAME'] = $member['lastname'];
$_SESSION['SESS_IS_ADMIN'] = $member['admin'];
session_write_close();
echo $_SESSION['SESS_MEMBER_ID'];
echo $_SESSION['SESS_FIRST_NAME'];
echo "Test!";
exit();
}else{
echo "Statement failed";
}
}
/* Close statement */
$query -> close();
config.phpには、次のものがあります。
$dbconn = new mysqli('localhost', 'root', 'password', 'bookingsystem');
また、ユーザーのデータベース構造は次のようになります。
`members` (`member_id`, `firstname`, `lastname`, `login`, `passwd`, `admin`) VALUES
(1, 'Steve', 'Stone', 'Admin', '5f4dcc3b5aa765d61d8327deb882cf99', 1);