SQL запрос просто ни чего не выводит PDO

465
08 января 2017, 19:57

Файл functions.php

include __DIR__ . "/mysql.php";
function checkPassword($pass, $email){
    $mysql = new Mysql();   
    $sql = "SELECT * FROM users where `email` = ':email' AND `password` = ':password'";
    $params = [':email' => $email, ':password' => md5($pass)];
    var_dump($mysql->query($sql, $params));
}

Функция query из mysql.php

public function query($sql, $params=[])
    {
        try {
            $sth = $this->db->prepare($sql);
            $sth->execute($params);
            return $sth->fetchAll(PDO::FETCH_OBJ);
        } catch (PDOException $e) {
            echo 'Ошбика при выполнение запроса: ' . $e->getMessage();
        }
    }

Проверяю функцию в index.php

include(__DIR__. '/core/functions.php');
checkPassword('123123','qwe@mail.ru');

И он мне выводит просто:

array(0) { }

В указанных параметрах все правильно, проверил через phpMyAdmin там находит.

SELECT * FROM users where email = 'qwe@mail.ru' AND password = MD5('123123')

Вот скрин:

Попробовал изменить SQL запрос на такой:

$sql = "SELECT * FROM users";

И у меня все вывелось, вывел всех пользователей. Получается проблема где то с массивом $params или что-то другое, не могу понять...

Answer 1

:email и :password в sql запросе должны быть без кавычек

$sql = "SELECT * FROM users where `email` = :email AND `password` = :password";
Answer 2

Может быть проблема с MD5 ?

Ваш запрос в PHP

$sql = "SELECT * FROM users where email = ':email' AND password = ':password'"

А вот запрос в phpmyadmin:

SELECT * FROM users where email = 'qwe@mail.ru' AND password = MD5('123123')

попробуйте md5 убрать из параметров и вызвать внутри запроса:

$sql = "SELECT * FROM users where email = :email AND password = MD5(:password)";

Либо проверьте простой запрос с одним параметром для email

READ ALSO
Получение количества участников групп VK API

Получение количества участников групп VK API

Доброго времени суток господаНужна ваша помощь в легкой задаче, увы, для меня из за нехватки опыта это оказалось сложным

674
Не могу исправить ошибку в Symfony

Не могу исправить ошибку в Symfony

CRITICAL - Fatal Error: Class AppBundle\Entity\User contains 2 abstract methods and must therefore be declared abstract or implement the remaining methods (Symfony\Component\Security\Core\User\UserInterface::getRoles, Symfony\Component\Security\Core\User\UserInterface::eraseCredentials)

356
PHP, распарсить JSON

PHP, распарсить JSON

Здравствуйте

786