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 値 (: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 の予約語です。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

于 2016-08-03T11:44:08.440 に答える
1

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

于 2016-08-03T11:40:40.510 に答える
1

予約語を使用しているため、問題が発生したと思います。最善の解決策は、列にいくつかのプレフィックスを追加することです。

于 2016-08-03T11:46:27.373 に答える