Помогите пожалуйста вывести на pdo корректно массив $user из msSQL, в массиве $user выводится только username и password, id и phone выдает null
case 'login':
if(isTheseParametersAvailable(array('username', 'password'))){
$username = $_POST['username'];
$password = md5($_POST['password']);
$stmt = $db->query("SELECT id, username, email, phone FROM users WHERE username='$username' AND password='$password'");
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();
$rows = 0;
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$rows++;
}
if($rows==1){
$user = array(
'id'=>$id,
'username'=>$username,
'password'=>$password,
'phone'=>$phone
);
Ответы (2 шт):
Автор решения: 4 kilograms
→ Ссылка
- Используйте более корректный синтаксив в запросе, это вам пригоидтся)
$stmt = $db->query("SELECT `id`, `username`, `email`, `phone` FROM `users` WHERE `username`='".$username."' AND `password`='".$password."' ");
У вас в переменную $user падают не данные из БД, а данные из $_POST, поэтому вы только их и можете увидеть
Попробуйте сделать так, положите в переменную $user = $stmt->execute();
и сразу var_dump($user); Что выводится?
- Готовьтесь получить кучу сладких комментов в сторону MD5 в пароле)
Автор решения: Slava Rozhnev
→ Ссылка
<?php
$username = $_POST['username'];
$password = md5($_POST['password']);
$stmt = $pdo->prepare("SELECT id, username, email, phone FROM users WHERE username=? AND password=?");
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute([$username, $password]);
if($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$user = array(
'id'=>$row['id'],
'username'=>$row['username'],
'password'=>$row['password'],
'phone'=>$row['phone']
);
}