簡體   English   中英

Phalcon PHP致命錯誤:消息“未知表達式”未捕獲的異常

[英]Phalcon PHP Fatal Error: Uncaught exception with message 'Unknown Expression'

我試圖遵循Phalcon提供的REST應用程序教程,但是在嘗試插入數據時卻遇到問題。 我的問題是我不知道該錯誤應該意味着什么。 我相信這是Phalcon中的錯誤,但是我對C的知識不存在。 讓我知道是否應該提供更多背景信息。

這是PHP錯誤日志中顯示的錯誤:

PHP Fatal error:  Uncaught exception 'Phalcon\\Mvc\\Model\\Exception' with message 'Unknown expression' in /home/acarbonaro/testApplication/index.php:84\n
Stack trace:\n
0 [internal function]: Phalcon\\Mvc\\Model\\Query->_getExpression(274, false)\n
1 [internal function]: Phalcon\\Mvc\\Model\\Query->_prepareInsert()\n
2 [internal function]: Phalcon\\Mvc\\Model\\Query->parse()\n
3 [internal function]: Phalcon\\Mvc\\Model\\Query->execute(Array, NULL)\n
4 /home/acarbonaro/testApplication/index.php(84): Phalcon\\Mvc\\Model\\Manager->executeQuery('INSERT INTO Pro...', Array)\n
5 [internal function]: {closure}()\n
6 /home/acarbonaro/testApplication/index.php(115): Phalcon\\Mvc\\Micro->handle()\n
7 {main}\n
  thrown in /home/acarbonaro/testApplication/index.php on line 84

這是帶有行號供參考的POST路由的代碼。

71: $app->post('/api/products', function() use ($app) {
72:     if ($app->request->isPost() == true) {
73:         if ($app->request->isAjax() == true) {
74:             $product = $app->request->getJsonRawBody();
75:             $partNumber = $product->partNumber;
76:         }
77:         $partNumber = $app->request->getPost('partNumber');
78:     }
79: 
80:     $phql = "INSERT INTO Products (partNumber) VALUES (:partNumber:)";
81:     $params = array(
82:         'partNumber' => $partNumber
83:     );
84:     $status = $app->modelsManager->executeQuery($phql, $params);
85: 
86:     // Prep the response
87:     if ($status->success() == true) {
88:         $response->setStatusCode(201, "Created");
89: 
90:         $product->id = $status->getModel()->id;
91: 
92:         $response->setJsonContent(array('status' => 'OK', 'data' => $product));
93:     } else {
94:         $response->setStatusCode(409, "Conflict");
95: 
96:         // Send errors to the client
97:         $errors = array();
98:         foreach($status->getMessages() as $message) {
99:             $errors[] = $message->getMessage();
100:         }
101:  
102:         $response->setJsonContent(array('status' => 'ERROR', 'messages' => $errors));
103:     }
104:  
105:     return $response;
106: });
80:     $phql = "INSERT INTO Products (partNumber) VALUES (:partNumber)";
81:     $params = array(
82:         ':partNumber' => $partNumber
83:     );
84:     $status = $app->modelsManager->executeQuery($phql, $params);

我對您所說的Phalcon沒有經驗,但是從堆棧跟蹤來看,它似乎正在使用PDO。

第80行:刪除了最后一個冒號,使其具有... VALUES(:partNumber)“;

第82行:在數組鍵的開頭添加了一個冒號,因此您擁有':partNumber'=>

那將是一個有效的PDO prepare()語句。 您的里程可能會有所不同,但這將是一個不錯的起點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM