2016-08-03 10 views
3

は、私は、次のINSERTコード持っている:Phalcon生のクエリを挿入構文エラー

$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

何の問題を引き起こす可能性が?前もって感謝します!

答えて

4

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

+0

うん、それだよ! Низкийпоклон、доземли! –

1

してください、代わりに `desc desc`を使用してみてください。

+0

INSERT INTO MastersReservedTime(master_id、service_id、date、time、 'desc') - 役に立たなかった*(今エラー:未知の例外 'Phalcon \\ Mvc \\ Model \\ Exception' with message ' 、パース:INSERT INTO MastersReservedTime(MASTER_ID、のservice_id、日付、時間、 ' ':MASTER_ID :,:service_idの:,:日付:,::時間:, DESC :))VALUES(' に近いトークンSTRING(DESC)、 DESC ') –

+0

ノーノ、ない'、使用\ ' - それはあなたのkeybordのエスケープボタンの下。 – Lakremon

1

私はあなたがreserved wordsを使用しているので、あなたが問題を得たと思います。 最高の解決策は、列のプレフィックスを追加することです。

関連する問題