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

Всем привет, делаю запрос в БД, о непрочитанных новостях, вот запрос:

$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

Comments

  1. Так вообще работает?
$notReadNews = $modx->query("SELECT COUNT(*) as count FROM read_news WHERE published = '1'")->fetchColumn();
echo $notReadNews;

То есть для начала надо разобраться выполняется запрос без условия или нет. А потом уже смотреть вариант с условием.

Но это ответ на заданный вопрос. А от меня: что за дичь с колонками под каждого пользователя?))

Дичь с колонками да, я тоже удивился, но как есть, таблица была создана уже до меня.

Сорри за долгий ответ. Скорее всего проблема в выборе кавычек. Одинарный кавычки - это значение. То есть условно проверяется '100' = '0'. Это не будет истина. Проверяется в данном случае не значение колонки, а просто значение. Название колонки - это в обратных кавычках, то есть `. Должно работать так:

$id = $_SESSION['nomer'];
$notReadNews = $modx->query("SELECT COUNT(*) as count FROM read_news WHERE `$id` = '0' and published = '1'")->fetchColumn();
echo $notReadNews;