Файл 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 или что-то другое, не могу понять...
:email и :password в sql запросе должны быть без кавычек
$sql = "SELECT * FROM users where `email` = :email AND `password` = :password";
Может быть проблема с 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
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости