Phalcon — ошибка синтаксиса вставки необработанного запроса

У меня есть следующее INSERT код:

$reservationSuccess = $app->modelsManager->executeQuery(
"INSERT INTO MastersReservedTime (master_id, service_id, date, time, desc)
VALUES (:master_id:, :service_id:, :date:, :time:, :desc:)",
array(
'master_id' => $OrderCommit->master_id,
'service_id' => $oneService -> service_id,
'date' => $OrderCommit->date,
'time' => $startTime,
'desc' => $desc
)
);

И этот код генерирует следующее сообщение об ошибке:

Неустранимая ошибка PHP: необработанное исключение «Phalcon \ Mvc \ Model \ Exception» с сообщением «Синтаксическая ошибка, неожиданный токен DESC, рядом с») \ r \ n ЗНАЧЕНИЯ (: master_id :,: service_id :,: date :,: время: ,: desc 🙂 ‘, при разборе: INSERT INTO MastersReservedTime (master_id, service_id, дата, время, desc) \ r \ n VALUES (: master_id :,: service_id :,: date :,: time :,: desc 🙂 (209) ‘в /var/www/api/v1.0/index.php:1827\nStack trace: \ n # 0 [внутренняя функция]: Phalcon \ Mvc \ Model \ Query-> parse () \ n # 1 [внутренняя функция]: Phalcon \ Mvc \ Model \ Query-> execute () \ n # 2 /var/www/api/v1.0/index.php(1827): Phalcon \ Mvc \ Model \ Manager-> executeQuery ( ‘INSERT INTO Mas …’, Array) \ n # 3 [внутренняя функция]: {closure} () \ n # 4 /var/www/api/v1.0/index.php(1961): Phalcon \ Mvc \ Micro-> handle () \ n # 5 {main} \ n добавляется в /var/www/api/v1.0/index.php в строку 1827

Что может вызвать проблему? Заранее спасибо!

3

Решение

Desc is MySQL зарезервированное слово. Вы должны избегать зарезервированных слов, когда вы используете необработанные запросы. Чтобы избежать их в PHQL, вы должны заключить их в квадратные скобки [].

Переписав ваш запрос следующим образом:

INSERT INTO MastersReservedTime (master_id, service_id, date, time, [desc])
VALUES (:master_id:, :service_id:, :date:, :time:, :desc:)

Обратите внимание [desc] выше.

Информация из документов: https://docs.phalconphp.com/en/latest/reference/phql.html#escaping-reserved-words

4

Другие решения

Пожалуйста, попробуйте использовать `desc` вместо desc,

1

Я думаю, что у вас есть проблемы, потому что вы используете зарезервированные слова.
Лучшее решение — добавить префикс для столбцов.

1
По вопросам рекламы [email protected]