запрос на обновление exp в базе данных на 1 при каждом нажатии

#mysql #pdo

#mysql #pdo

Вопрос:

Это код, который я пытаюсь использовать, поэтому, когда кто-то нажимает «нажмите меня», он обновляет опыт игроков на 1 каждый раз. Это позволяет мне нажимать, но не обновляет базу данных и т.д.

 if(isset($_POST["submit"])){
$rpg = "UPDATE members SET exp = exp   1 WHERE `memberID`='{$id}'";
$prepStatement = $db->prepare( $rpg );
$prepStatement->execute(array($id => 1));
}

<form method ="post">
<input type="submit" value="click me"/>
</form>
  

Я бы хотел, чтобы, когда кто-то нажимает «click me», он получал 1 exp, добавляемый к «exp» в базе данных.

Ответ №1:

Вы неправильно готовите свой запрос — то, как вы это делаете, не имеет параметров, но затем вы передаете один из них в запросе, поэтому вы получите ошибку несоответствия количества параметров. Правильный код должен быть:

 $rpg = "UPDATE members SET exp = exp   1 WHERE `memberID`=:id";
$prepStatement = $db->prepare( $rpg );
$prepStatement->execute(array(':id' => $id));
  

Комментарии:

1. Привет, похоже, это тоже ничего не обновляет :/

2. Как устанавливается $id переменная?

3. $id = (int) (isset($_GET[‘MemberID’]) ? $_GET[‘MemberID’] : $_SESSION[‘MemberID’] );

4. Поскольку вы используете POST , $_GET['memberID'] не будет установлен. Вы проверили, что $_SESSION['memberID'] установлено и допустимо?

5. Итак, вы видите какие-либо ошибки? Почему вы выполняете обновление внутри цикла while?