Я пытаюсь создать простой API входа, который позволяет входить в базу данных при вводе совпадающего адреса электронной почты и пароля и выдает идентификатор этой строки в результате.
Примечание: 1) Я использую var_dump в некоторых местах только для тестовых целей.
2) отказ от ответственности: я не использую шифрование паролей только для простоты понимания потока.
3) Я использую PDO, но без фреймворка. Вот часть кода логина. php. 'user' - это класс, объявленный в user. php, а имя таблицы - 'users', содержащее столбцы, такие как идентификатор, адрес электронной почты, пароль и имя пользователя.
//prepare user object
$user= new user($db);
$user->email=isset($_GET['email'])?$_GET['email']:die();
$user->password=isset($_GET['password']) ? $_GET['password'] : die();
$stmt=$user->login();
var_dump($stmt);
if ($stmt->rowCount()>0) {
$row=$stmt->fetch(PDO::FETCH_ASSOC);
var_dump($row);
$user_arr=array(
"status" => true,
"message" => "succesfully logged in",
"id" => $row['id']
);
} else {
$user_arr=array(
"status" => false,
"message" => "login attempt failed due to invalid email or password"
);
}
print_r(json_encode($user_arr));
Ниже приведен фрагмент функции входа в систему от пользователя . php
function login(){
//select all query
$query="SELECT
'id','email','password','username'
FROM ".$this->table_name."
WHERE
email='".$this->email."'
AND password='".$this->password."'";
//prepare query statement
$stmt=$this->conn->prepare($query);
if ($stmt->execute()) {
return $stmt;
} else {
return null;
}
Результат:
объект (PDOStatement) # 4 (1) {["queryString"] => string (194) "SELECT 'id ',' email ',' password ',' username 'ОТ пользователей ГДЕ email =' upasana@api.com 'AND password =' def456 '"} массив (4) {[" id "] => строка (2)" id " ["email"] => строка (5) "email" ["пароль"] => строка (8) "пароль" ["имя пользователя"] => строка (8) "имя пользователя"} {"status": true, "message": "успешно авторизован", "id": "id"}
Итак, в основном, FETCH_ASSOC
не работает? Почему он обрабатывает идентификатор как идентификатор и выбрасывает его как строку, а не находит связанное значение?