ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-08-24 03:15:42  阅读:204  来源: 互联网

标签:phalcon php mysql phalcon-orm


我有以下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

标签:phalcon,php,mysql,phalcon-orm
来源: https://codeday.me/bug/20190824/1703645.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有