@krekerov
Fullstack ninja

Как использовать PDO fetch result?

Код ниже пытается залогинить пользователя (проверяет в базе, если есть выводит реквизиты).
Напрямую с базой хочу отучиться работать и использовать PDO.
Не ясно как исключить из результата поле пароль. Иначе сейчас он его выводит.

Далее в скприпте ставится кука с этими реквизитами. как сделать правильно?
$email = $_POST['email'];
        $password = $_POST['password'];

        $sql = "SELECT email, password FROM users WHERE email='$email' and password='$password'";
    
        try {
            $db = getConnection();
            $stmt = $db->query($sql);
    
            $account = $stmt->fetch(PDO::FETCH_ASSOC);
            //echo $companies['c'];
            $db = null;
            echo fix_json(json_encode($account));
        } catch(PDOException $e) {
            echo '{"error":{"text":'. $e->getMessage() .'}}';
        }
  • Вопрос задан
  • 2673 просмотра
Решения вопроса 1
egor_nullptr
@egor_nullptr
...
$sql = "SELECT email FROM users WHERE email = ? AND password = ?";
try {
    $db = getConnection();
    $stmt = $db->prepare($sql);
    $stmt->exec([$email, $password]);
    $account = $stmt->fetch(PDO::FETCH_ASSOC);
...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Graph
Ну или

unset($account['password']);
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
PDO - это точно такая же работа "напрямую с базой".
А вот от чего действительно надо отучаться - это от привычки писать на каждый чих горы бессмысленного, ненужного и вредного кода.
$sql = "SELECT email, password FROM users WHERE email=? and pssword=?";
$stmt = getConnection()->prepare($sql);
$stmt->execute(array($_POST['email'],$_POST['password']));
$email = $stmt->fetchColumn();

Это весь код, который нужен. Все остальное лишнее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы