PHP не видит запись из таблицы
может кто-то объяснить почему php не видит запись в таблице, запись есть и условиям удовлетворяет, а вот выводится пустой массив, в результате работы данного файла выводится 4[]
<?php
require_once 'includes/db.inc.php'; //здесь стандартное подключение бд, здесь ошибки нет, так везде работает на 100%
session_start();
$sql="SELECT message,add_friends FROM notifications_".$_SESSION['data-user']['id']."
WHERE _unread=1 AND cancel_add!=1";
$result=$pdo->query($sql);
echo $_SESSION['data-user']['id'];
echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
Это то что находится в таблице
Ответы (1 шт):
Автор решения: Ипатьев
→ Ссылка
Эта таблица, начиная от структуры заканчивая самим фактом её существования - это ночной кошмар программиста.
Это не в укор сказано - все мы учимся и поначалу пишем такой же ужас. Это просто для информации, что так делать ни в коем случае нельзя.
- Таблица должна быть ОДНА. В ней должно быть поле ид юзера. Я вижу это не единственный пример, там еще светятся похожие таблицы. Правило тут такое: если у тебя в имени поля или таблицы есть номер - это значит, что ты изуродовал свою базу данных.
- Зачем в таблице отдельные поля _read и _unread? Что - одно поле со значениями 1 и 0 не справится?
- Не надо делать поле NULL по умолчанию, если будет фильтр по его значению. Или, если значение это просто флаг - то проверять на null
В итоге делаем ОДНУ таблицу, убираем бессмысленное поле _read, добавляем поле по которому различаем юзеров
$sql="SELECT uid,message,add_friends FROM notifications
WHERE uid=? AND _unread=1 AND cancel_add is null";
$stmt=$pdo->prepare($sql);
$stmt->execute([$_SESSION['data-user']['id']]);
echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
