Я пытаюсь создать метод, чтобы проверить, существует ли пользователь, и если он существует, вернуть его идентификатор из базы данных.В прошлом я всегда использовал mysql_fetch_array после моего запроса, а затем я использовал array_shift ($ result_array) для получения идентификатора.Доказано, что это вызов с подготовленными заявлениями.Вот мой метод:
<?php
require_once("db.php");
class User extends Database{
public $dbFields = array('username', 'password');
public $tableName = "users";
public $id;
public $username;
public $password;
// public function auth($user, $pass){
// $this->username = $user;
// $this->password = $pass;
// }
public function authenticate($username = '', $password = ''){
if(!empty($username) && !empty($password)){
$stmt = "SELECT * FROM users ";
$stmt .= "WHERE username =:username ";
$stmt .= "AND password =:password ";
$stmt = $this->db->prepare($stmt);
if($result = $stmt->execute(array(':username' => $username, ':password' => $password))){
if ($result = $stmt->fetch(PDO::FETCH_ASSOC)){
return $result;
} else {
return print("false");
}
}else{
return print("false false");
}
}
}
}
?>
Это может быть неактуально, но вот страница формы:
if (isset($_POST['submit'])){
$username = $_POST['username'];
$password = $_POST['password'];
$user = new User();
$user->authenticate($username, $password);
}
?>
<html>
<head>
<title>test</title>
</head>
<body>
<form action = "test.php" method= "POST" accept-charset="utf-8" >
<p>Username
<input type="text" name="username" maxlength="30" value="" />
</p>
<p>Password
<input type="password" name="password" maxlength="30" value="" />
</p>
<p><input type="submit" name="submit" value="Continue →"></p>
</form>
</body>
</html>
Я успешно использую pdo на всехмои другие методы БД, так что я действительно не хочу переключаться обратно на стандартную инструкцию MySQL, если я могу помочь.Любой совет?
Редактировать: изменен синтаксис в массиве выполнения в соответствии с рекомендациями Криса.