2014-11-02 53 views
-1

今天我嘗試使用SLIM框架爲我的REST Web服務創建更新函數。 但我得到了這個問題。 我一直堅持我的查詢,因爲它不能很好地工作。QUERY ERROR,無法更新數據庫中的查詢

,這是我的課包括查詢

 public function updateUserCard($card_id, $user_id, $barcode) 
     { 
      $stmt = $this->conn->prepare("UPDATE user_cards uc, cards c 
              SET uc.barcode = ?         
              WHERE uc.id = ? 
              AND uc.id = c.card_id 
              AND uc.user_id = ?"); 
      if($stmt == FALSE) 
      { 
       die($this->conn->error); 
      } 
      else 
      { 
       $stmt->bind_param("iis", $user_id, $card_id, $barcode); 
       $stmt->execute(); 
       $num_affected_rows = $stmt->affected_rows; 
       $stmt->close(); 
       return $num_affected_rows > 0; 
      } 
     } 

我嘗試更新與新價值「條碼」列。但它沒有奏效。

而且這是我的index.php代碼

 $app->put('/cards/users/:id', 'authenticate', function($id) use ($app) 
     { 
      // check for required params 
      verifyRequiredParams(array('barcode')); 

      global $user_id; 
      $barcode = $app->request->put('barcode'); 


      $db = new UserCard(); 
      $response = array(); 

      // updating card 
      $result = $db->updateUserCard($user_id, $card_id, $barcode); 
      if ($result) 
      { 
       // card updated successfully 
       $response["error"] = false; 
       $response["message"] = "Card updated successfully"; 
      } 
      else 
      { 
       // card failed to update 
       $response["error"] = true; 
       $response["message"] = "Card failed to update. Please try again!"; 
      } 
      echoRespnse(200, $response); 
     }); 

的反應總是喜歡$response["message"] = "Card failed to update. Please try again!";

難道我寫了一個錯誤的代碼? 感謝您的幫助球員:)

+0

您的函數updateUserCard帶有兩個參數($ user_id,$ barcode),並且在調用updateUserCard時,您首先傳遞條形碼,然後傳遞userid。檢查這一行,$ result = $ db-> updateUserCard($ barcode,$ user_id); – 2014-11-02 11:26:22

回答

0

看起來你有錯誤的順序,同時傳遞參數調用updateUserCard。

您的函數updateUserCard帶有兩個參數($ user_id,$ barcode),並且在調用updateUserCard時,您首先傳遞條形碼,然後傳遞userid。

檢查這條線,$result = $db->updateUserCard($barcode, $user_id);

+0

我已經嘗試過了,但它沒有起作用 – 2014-11-02 12:03:39

+0

您是否更正了參數的順序並嘗試了? – 2014-11-02 13:45:03

+0

是的,哈哈我仍然不明白問題是什麼 – 2014-11-03 01:55:18

0

裏面有功能updateUserCard沒有$ card_id的($ USER_ID,$條形碼)

要麼你忘了將它傳遞參數,使其全球,從取來「$此 - >'或從其他地方獲得。

+0

我已經試過了,但它仍然沒有工作。我認爲我的查詢出錯了。 – 2014-11-02 12:08:28

0

你需要改變你的index.php代碼。嘗試下面的代碼:

$app->put('/cards/users/:id', 'authenticate', function($id) use ($app) 
     { 
      // check for required params 
      verifyRequiredParams(array('barcode')); 

      global $user_id; 
      $barcode = $app->request->put('barcode'); 


      $db = new UserCard(); 
      $response = array(); 

      // updating card 
      $result = $db->updateUserCard($card_id, $user_id, $barcode); 
      if ($result) 
      { 
       // card updated successfully 
       $response["error"] = false; 
       $response["message"] = "Card updated successfully"; 
      } 
      else 
      { 
       // card failed to update 
       $response["error"] = true; 
       $response["message"] = "Card failed to update. Please try again!"; 
      } 
      echoRespnse(200, $response); 
     }); 
+0

仍然沒有工作,總是$ response [「message」] =「卡無法更新,請重試!」; – 2014-11-03 10:41:50