QUERY ERROR,无法在DB中更新查询

时间:2014-11-02 11:21:24

标签: php mysql web-services rest slim

今天我尝试使用SLIM框架为我的REST Web服务创建更新功能。 但是我遇到了这个问题。 我一直坚持我的疑问,因为它不能很好地运作。

这是我的类包含查询

       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!";

我写错了代码吗? 谢谢你们的帮助:)

3 个答案:

答案 0 :(得分:0)

函数updateUserCard中没有$ card_id($ user_id,$ barcode)

您要么忘记在参数中传递它,将其设为全局,从' $ this->获取它'或者从其他地方获得。

答案 1 :(得分:0)

在传递调用updateUserCard的参数时,似乎您的顺序不正确。

你的函数updateUserCard带有两个参数($ user_id,$ barcode),在调用updateUserCard时,你首先传递条形码,然后是userid。

选中此行$result = $db->updateUserCard($barcode, $user_id);

答案 2 :(得分: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);
        });