今天我尝试使用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!";
我写错了代码吗? 谢谢你们的帮助:)
答案 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);
});