29 янв. 2019 г., 7:25

Вопрос по запросу в БД.

Всем привет, делаю запрос в БД, о непрочитанных новостях, вот запрос:
$id = $_SESSION['nomer']; $notReadNews = $modx->query("SELECT COUNT(*) as count FROM read_news WHERE '$id' = '0' and published = '1'")->fetchColumn(); echo $notReadNews;
Но ничего не происходит, выводится 0, $id - это номер менеджера в кабинете которого я нахожусь.
Вот сама таблица: https://c.radikal.ru/c42/1901/88/ea5433f35efe.jpg
1. Так вообще работает?
$notReadNews = $modx->query("SELECT COUNT(*) as count FROM read_news WHERE published = '1'")->fetchColumn(); echo $notReadNews;
То есть для начала надо разобраться выполняется запрос без условия или нет. А потом уже смотреть вариант с условием.

Но это ответ на заданный вопрос. А от меня: что за дичь с колонками под каждого пользователя?))
Дичь с колонками да, я тоже удивился, но как есть, таблица была создана уже до меня.
А по Вашему запросу все нормально выводит, количество 10.
есть еще варианты?
Сорри за долгий ответ. Скорее всего проблема в выборе кавычек. Одинарный кавычки - это значение. То есть условно проверяется '100' = '0'. Это не будет истина. Проверяется в данном случае не значение колонки, а просто значение. Название колонки - это в обратных кавычках, то есть `. Должно работать так:
$id = $_SESSION['nomer']; $notReadNews = $modx->query("SELECT COUNT(*) as count FROM read_news WHERE `$id` = '0' and published = '1'")->fetchColumn(); echo $notReadNews;


Блин, точно, глупая ошибка, спасибо большое за помощь!)

Добавить комментарий