PHP - MySQLi Prepared Statement: неизвестная функция "max" (Ошибка 1630) - PullRequest
0 голосов
/ 27 декабря 2018

Я получаю сообщение об ошибке при подготовке простого запроса к моей базе данных.Это довольно просто.Предположительно, функция max() не существует.Это простой запрос:

SELECT coalesce ( max ( p_order ), 0 ) + 1 AS new FROM pages

У него нет параметров для привязки (но я использую собственный класс для управления своими запросами, поэтому всегда используются подготовленные операторы).

При подготовкеЗаявление Я получаю следующую ошибку из базы данных: «FUNCTION fa_cms.max не существует. Проверьте раздел« Разбор и разрешение имени функции »в Справочном руководстве».Код - 1630.

Я могу выполнить этот запрос непосредственно в базе данных (MariaDB 10.1.29) без каких-либо проблем - и получить «1», потому что таблица все еще пуста.

Но когдаЯ вызываю это утверждение через свой собственный класс PHP, я получаю эту ошибку.Все остальные операторы подготавливаются и выполняются без проблем - с параметрами или без них.

Есть ли что-то особенное в агрегатной функции max()?

1 Ответ

0 голосов
/ 27 декабря 2018

Проблема в промежутке между max и (.Из документации :

По умолчанию не должно быть пробелов между именем функции и круглыми скобками после него.Это помогает анализатору MySQL различать вызовы функций и ссылки на таблицы или столбцы, имена которых совпадают с именами функций.

Однако это требование не всегда соблюдается.Кажется, это действительно имеет значение только при использовании функций агрегирования.

Поэтому измените ваш запрос на:

SELECT coalesce(max(p_order), 0) + 1 AS new FROM pages
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...