- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Господа, только вникаю в подготовленные запросы, не могу понять что не так с этим запросом?
Ругается что возвращается пустота
Хотя если выполнить запрос ручками, или вставить его прям в функцию - все будет ок
То что подставляется нужная таблица и в функцию приходят нужные переменные я проверил. А как проверить итоговый запрос который в базу уходит чтобы понять что не так?
Проблема из-за возврата null, на этот раз из query(). Зачем вам вообще нужно это значение? Не используете исключения?
Как я понимаю, это ваш query(). У метода PDO другие параметры.
А как проверить итоговый запрос который в базу уходит чтобы понять что не так?
Проще всего - сделать синтаксическую ошибку в запросе. Тогда строка запроса будет выдана в сообщении об ошибке.
Другой путь - сделать вывод этой строки в методе query().
Проблема из-за возврата null, на этот раз из query(). Зачем вам вообще нужно это значение? Не используете исключения?
Как я понимаю, это ваш query(). У метода PDO другие параметры.
query это просто обращение к методу класса базы
Проще всего - сделать синтаксическую ошибку в запросе. Тогда строка запроса будет выдана в сообщении об ошибке.
Другой путь - сделать вывод этой строки в методе query().
Синтактическая ошибка ничего не выводит (ошибка не меняется), пытался в классе DB поймать запрос, выводит это
Параметры вроде тоже верно приходят
Сам запрос в майдамин отрабатывает нормально
query это просто обращение к методу класса базы
Вместо возврата null пробрасывайте исключение.
Что в общем может быть причиной ошибки? Попробуйте, как вам выше написали, явно "биндить" в целочисленный тип. Возможно, MySQL не поддерживает PG-синтаксис LIMIT в подготовленных выражениях - попробуйте обычный LIMIT x, y. Про ошибки времени выполнения тоже не стоит забывать.
Потому, что нельзя передавать в запрос ничего кроме переменных. Чтобы передавать лимиты и т.д. тебе надо выключить этот режим:
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
Иначе у тебя все цифры загоняются в одинарные кавычки ' 10'
Остальное гугли по запросу:
mysql PDO LIMIT ATTR_EMULATE_PREPARES
И в целом вы прописываете методу возврат массива, хотя возвращаете результат функции у которой прописано что может быть null. Зачем вы сами себе в ногу стреляете то?
Не делайте так никогда, шторм обычно кричит о таких ошибках, у вас на деве она может всегда возвращать массив и вы ошибку не поймаете, а у пользователей обязательно оно вылезет