php, обновление mysqli с подготовленным оператором не работает - PullRequest
0 голосов
/ 27 марта 2020
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 часов!

1 Ответ

0 голосов
/ 27 марта 2020

На основании приведенного выше кода вызов функции update_review () имеет переменные в одном порядке, а сама функция объявляется с переменными в другом порядке.

Из-за этого вы можете передавать строку, когда заявление ожидает int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...