Превратить строку из запроса в целое число для другого запроса

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

В принципе, я хочу, чтобы каждый раз, когда кто-то щелкает, он обновляет номер базы данных, чтобы он был таким же, как + 1.

Код:

$id = $_POST['id'];
$curr = mysqli_query($mysqli, "SELECT `likes` FROM savage WHERE `id` = '$id'");
$curr2 = intval($curr) + 1;
mysqli_query($mysqli, "UPDATE savage SET `likes`='$curr2' WHERE `id`='$id'");

Я пытался использовать Intval? Я просто делал попытку.

-1

Решение

Здесь было бы лучше сделать:

mysqli_query($mysqli, "UPDATE savage SET `likes`=`likes`+1 WHERE `id`='$id'");

Если вы читаете значение в PHP, затем добавляете его, затем сохраняете, вы можете получить данные из синхронизации.

Представьте, что два человека попали на эту страницу одновременно. Если бы они действительно пришли в порядок, вы бы получили:

Человек A: БД читается как 1. Вы добавляете 1 и сохраняете. Значение теперь будет 2.

Человек Б: БД читается как 2. Вы добавляете 1 и сохраняете. Значение теперь будет 3.

Но может случиться так, что каждый читает БД примерно в одно и то же время:

Человек A: БД читается как 1. Вы добавляете 1 и сохраняете. Значение теперь будет 2.

Человек Б: БД читается как 1. Вы добавляете 1 и сохраняете. Значение теперь будет 2.

Другими словами, вы можете увеличивать устаревшее значение и сохранять. Если вы делаете все это в одном операторе SQL, вы не получите эту проблему.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]