PHP,MySQLi更新与准备好的语句不起作用

 收藏
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小时!

回复
  • Ling6 回复

    根据上面的代码,对update_review()的函数调用具有一个顺序的变量,而函数本身以另一顺序的变量声明。

    因此,当语句需要一个整数时,您可能会传递一个字符串。