2014-11-02 56 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