簡體   English   中英

php,mysqli 更新,准備好的語句不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM