[英]php, mysqli update with prepared statement not working
function update_review($link, $user_id, $game_id, $rating, $title, $review) {
$sql = "UPDATE reviews SET rating = ?, title = ?, review = ? WHERE user_id = ? AND game_id = ?";
$stmt = $link->prepare($sql);
if ( !$stmt ) {
die("could not prepare statement: " . $link->errno . ", error: " . $link->error);
}
$stmt->bind_param("sssii", $rating, $title, $review, $user_id, $game_id);
if ( !$stmt ) {
die("could not bind params: " . $stmt->error);
}
if ( !$stmt->execute() ) {
die("couldn't execute statement");
}
}
function update_review2($link) {
$sql = "update reviews set rating = \"43\", title = \"test\", review = \"blah\" where user_id = \"5\" and game_id = \"1\"";
$stmt = $link->prepare($sql);
if ( !$stmt ) {
die("could not prepare statement: " . $link->errno . ", error: " . $link->error);
}
if ( !$stmt->execute() ) {
die("couldn't execute statement");
}
}
var_dump($review_data);
// output = array(5) { ["user_id"]=> int(5) ["game_id"]=> int(1) ["rating"]=> string(2) "43" ["title"]=> string(4) "test" ["review"]=> string(4) "blah" }
update_review($link, $review_data['rating'], $review_data['title'], $review_data['review'], $review_data['user_id'], $review_data['game_id']);
老實說,做了通常的大學學生的事情,把作業留到最后一分鍾,然后又后悔了……無論如何,我已經嘗試了幾個小時來解決這個問題,但我已經不知所措了,我讓它工作了通過不使用准備好的語句,正如您在上面的 update_review2 函數中看到的那樣,但是當使用准備好的語句版本 update_review 時,它不會影響數據庫中的任何行。 如果有人可以提供一些幫助,將不勝感激,特別是因為截止日期是 6 小時!
根據您上面的代碼,對 update_review() 的函數調用具有一個順序的變量,而函數本身是用另一個順序的變量聲明的。
因此,當語句需要一個 int 時,您可能會傳遞一個字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.