Как посчитать кол-во строк в бд MySQL PHP подготовленным запросом PDO?

Пытаюсь посчитать сколько пользователей есть в БД с определенным E-mail.
GET-параметр принимается правильно, пользователи с нужным E-mail есть.
Все равно возвращает 0.

Запрос нужно обязательно сделать через паттерн.

$data = $_GET;

$database = [
	'host' 	=> 'localhost',
	'name' 	=> 'project',
	'username' 	=> 'root',
	'password' 	=> 'root',
	'charset' 	=> 'utf8'
];

$connection = new PDO(
	'mysql:host=' . $database['host'] . ';databasename=' . $database['name'] . ';charset=' . $database['charset'],
	$database['username'],
	$database['password']
);

$sql = "SELECT * FROM `clients` WHERE `email` = ?";
$pattern = [
	$data['email']
];

$sth = $connection->prepare($sql);
$sth->execute($pattern);

$result = $sth->rowCount();

var_dump($result);
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Здесь два вопроса в одном.

1. Как посчитать кол-во строк в бд MySQL PHP подготовленным запросом PDO?

Очень просто. Надо узнать, как в SQL считают строки, а потом выполнить подготовленный запрос. В SQL строки считают запросом count(*). А в РНР строки считают только обезьяны.

Далее просто подготовить этот запрос и выполнить его

$sql = "SELECT count(*) FROM `clients` WHERE `email` = ?";
$pattern = [$data['email']];
$sth = $connection->prepare($sql);
$sth->execute($pattern);
$result = $sth->fetchColumn();


Просто как три копейки

Вопрос номер два: Пачиму ничиво нинаходит?

Ответ тоже простой - потому что в базе данных не находится совпадения с входящими данными.

И вот здесь уже мы сталкиваемся с действительно сложной темой, которая оказывается не по плечу большинству пользователей похапе: умение верить своим глазам, а не фантазиям.

Потому что если ты воображаешь, будто "GET-параметр принимается правильно, пользователи с нужным E-mail есть", а база данных говорит обратное, то база данных права в 100% случаев. Её писали совсем не дураки.

И если ничего не находит, то надо проверять. Что у тебя в базе, и что у тебя в во входящих параметрах. Там могут быть непечатные символы, ты можешь обраoаться к какой-то другой базе, у тебя может быть опечатка во входящих данных. Всё надо проверить. И ошибка обязательно найдётся.

Кроме прочего, в поисках проблем помогает правильный код соединения с ПДО, который попросит базу данных сообщать обо всех ошибках.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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