3

我有以下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:,:time: , :desc:)', 解析时: 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\n堆栈跟踪:\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 行

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

4

3 回答 3

4

Desc 是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

于 2016-08-03T11:44:08.440 回答
1

请尝试使用 `desc` 代替desc

于 2016-08-03T11:40:40.510 回答
1

我认为您遇到问题是因为您使用的是保留字。最好的解决方案是为列添加一些前缀。

于 2016-08-03T11:46:27.373 回答