Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
12 / 12 / 4
Регистрация: 31.10.2014
Сообщений: 84
1

Количество записей в БД через PDO

15.05.2018, 04:38. Просмотров 1739. Ответов 15
Метки нет (Все метки)

Здравствуйте, появилась небольшая проблема с выводом количества записей в БД
Есть рабочий запрос:
PHP
1
2
3
$result = $GLOBALS['pdo']->query("SELECT count(*) as id FROM news_comments");
$result->setFetchMode(PDO::FETCH_ASSOC);
$news_cols = $result->fetch();
Но он, как вы видите, считает все записи в таблице, и задать ему параметр WHERE не получается, выходит ошибка, связанная с setFetchMode. Пробовал что-то делать через prepare вместо query, тоже ноль результатов!
Кто знает, как сделать подобный запрос с параметров WHERE news_id = :news_id или WHERE news_id = $news_id??
Помогите плиз!!!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2018, 04:38
Ответы с готовыми решениями:

Получить количество записей в запросе PDO
Приветствую WEB-разработчиков! Происходит ошибка, на функцию fetchColumn(), вот ее текст: ...

Количество записей возвращенных запросом в классе PDO
Количество записей.. пробую такой код: $row=$query->fetch(); ...

PDO - получить число записей
подскажите плиз как в PDO получить число записей возвращаемых SELECT запросом

Сумма ячеек записей в PDO
здравствуйте, я тут пытаюсь написать небольшой скрипт, остановился на выводе суммы всех записей в...

15
291 / 243 / 65
Регистрация: 15.09.2017
Сообщений: 1,134
15.05.2018, 06:20 2
Дайте count(*) имя или не используйте FETCH_ASSOC.

Добавлено через 44 секунды
SQL
1
COUNT(*) `count`
Добавлено через 3 минуты
Хотя "as id" - это как раз и есть задание имени.
0
12 / 12 / 4
Регистрация: 31.10.2014
Сообщений: 84
15.05.2018, 06:33  [ТС] 3
Сейчас еще попробую методом тыка, уберу PDO::FETCH_ASSOC, может что и выйдет
0
291 / 243 / 65
Регистрация: 15.09.2017
Сообщений: 1,134
15.05.2018, 06:43 4
Может, вы неправильно состыковываете одно с другим. Для query должен подойти второй вариант условия.
0
12 / 12 / 4
Регистрация: 31.10.2014
Сообщений: 84
15.05.2018, 06:49  [ТС] 5
Phantom-84, Весь код у меня не маленький, да и смысла нет его показывать, не работает именно setFetchMode, он не понимает ни простую подставку переменной в SQL-запросе, ни плейсхолдер. Если вручную цифру поставить, то работает, но отображает один результат на всех элементах foreach, что естественно. Короче, полный ждец. Единственный момент, где PDO меня подвёл...

Добавлено через 2 минуты
Phantom-84, Пробовал в отдельном файле сделать такой счётчик, он работает, но только в голом файле, у меня в проекте не работает по причине того, что цикл в цикле выходит.

PHP
1
2
3
4
5
6
7
8
$result = $pdo->prepare("SELECT id FROM news_comments WHERE news_id = :news_id");
$result->execute(array('news_id' => $news_id));
$user_data = $result->fetchall();
 
$i = 0;
foreach($user_data as $lol) {
$i++;
}
0
291 / 243 / 65
Регистрация: 15.09.2017
Сообщений: 1,134
15.05.2018, 06:56 6
Есть count($user_data), но это не дело
0
12 / 12 / 4
Регистрация: 31.10.2014
Сообщений: 84
15.05.2018, 06:57  [ТС] 7
Попробую другим методом, при помощи обычной выборки и расчета в PHP

Добавлено через 46 секунд
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Есть count($user_data), но это не дело
count тоже пробовал, не то
0
291 / 243 / 65
Регистрация: 15.09.2017
Сообщений: 1,134
15.05.2018, 06:59 8
Попробуйте убрать метод setFetchMode.
0
Эксперт PHP
4198 / 3126 / 1012
Регистрация: 06.01.2011
Сообщений: 9,093
15.05.2018, 07:46 9
Лучший ответ Сообщение было отмечено feudor5599 как решение

Решение

Это должно сработать:
PHP
1
2
3
4
5
$sth = $GLOBALS['pdo']->prepare('SELECT COUNT(*) FROM news_comments WHERE news_id = ?');
 
$sth->execute([$news_id]);
 
echo $sth->fetchColumn();
Если не сработает, сразу выкладывайте ошибки сюда. Включите их вывод, если не работает и ошибок не видно.

Добавлено через 2 минуты
Цитата Сообщение от feudor5599 Посмотреть сообщение
Попробую другим методом, при помощи обычной выборки и расчета в PHP
Никогда так не поступайте. Тем более, в таких простых случаях, как Ваш.
1
12 / 12 / 4
Регистрация: 31.10.2014
Сообщений: 84
15.05.2018, 08:09  [ТС] 10
Цитата Сообщение от Para bellum Посмотреть сообщение
Это должно сработать
Parse error: syntax error, unexpected '[', expecting ')'

Добавлено через 5 минут
Версия PHP 5.3
0
Эксперт PHP
4198 / 3126 / 1012
Регистрация: 06.01.2011
Сообщений: 9,093
15.05.2018, 08:09 11
А если напрямую в базу запрос выполнить, работает?
SQL
1
SELECT COUNT(*) FROM news_comments WHERE news_id = ID_новости
0
12 / 12 / 4
Регистрация: 31.10.2014
Сообщений: 84
15.05.2018, 08:10  [ТС] 12
ругается на эту строку

PHP
1
$sth->execute([$news_id]);
Добавлено через 31 секунду
Цитата Сообщение от Para bellum Посмотреть сообщение
А если напрямую в базу запрос выполнить, работает?
да, напрямую работает
0
Эксперт PHP
4198 / 3126 / 1012
Регистрация: 06.01.2011
Сообщений: 9,093
15.05.2018, 08:10 13
Цитата Сообщение от feudor5599 Посмотреть сообщение
Версия PHP 5.3
Очень старая версия. Так исправьте:
PHP
1
$sth->execute(array($news_id));
0
12 / 12 / 4
Регистрация: 31.10.2014
Сообщений: 84
15.05.2018, 08:12  [ТС] 14
Para bellum, Да, точно, вспомнил я этот прикол, исправил)) работает, но выводит нули
0
Эксперт PHP
4198 / 3126 / 1012
Регистрация: 06.01.2011
Сообщений: 9,093
15.05.2018, 08:13 15
Переменная $news_id у Вас есть и в ней содержится правильный ID?
0
12 / 12 / 4
Регистрация: 31.10.2014
Сообщений: 84
15.05.2018, 08:32  [ТС] 16
Para bellum, Всё, спасибо огромное, Ваш запрос работает

Цитата Сообщение от Para bellum Посмотреть сообщение
Переменная $news_id у Вас есть и в ней содержится правильный ID?
Да, переменная есть, ID там правильный. Только вот я не ту переменную в execute поставил, немного тупанул, поторопился

Добавлено через 2 минуты
Теперь всё работает, спасибо! Буду fetchColumn и позиционные плейсхолдеры юзать для подсчета
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2018, 08:32

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Не подключается, через PDO
Почему пишет ошибку Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE ...

Добавление записи в БД через PDO
есть sql запрос: INSERT INTO `таблица` (`категория1`, `категория2`, `категория3`, `категория4`,...

Можно ли создать бд через PDO?
Собственно вопрос, делать выборки и отправлять я научился, а как создавать бд... Можно ли? Поискал...

Выборка данных через PDO
Здравствуйте, уважаемые форумчане. Возникла такая вот проблема. Есть такой код. $_POST принимает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.