php – Phalcon – Raw Query插入语法错误

我有以下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 Fatal error: Uncaught exception ‘Phalcon\Mvc\Model\Exception’ with message ‘Syntax error, unexpected token DESC, near to ‘)\r\n VALUES (:master_id:, :service_id:, :date:, :time:, :desc:)’, when parsing: INSERT INTO MastersReservedTime (master_id, service_id, date, time, desc)\r\n VALUES (:master_id:, :service_id:, :date:, :time:, :desc:) (209)’ in /var/www/api/v1.0/index.PHP:1827\nStack trace:\n#0 [internal function]: Phalcon\Mvc\Model\Query->parse()\n#1 [internal function]: 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 [internal function]: {closure}()\n#4 /var/www/api/v1.0/index.PHP(1961): Phalcon\Mvc\Micro->handle()\n#5 {main}\n thrown in /var/www/api/v1.0/index.PHP on line 1827

什么可能导致问题?提前致谢!

解决方法:

Desc是MySQL reserved word.当您使用Raw查询时,必须转义保留字.要在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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...