Обновление данных таблицы mysql двумя пользователями одновременно

Я работаю с онлайн-игрой для Android с php на стороне сервера. Теперь я застрял в одном месте.

Я хочу, чтобы 2 пользователя играли в игру, когда оба находятся в сети и подключаются к одной и той же игре, при подключении я вызываю URL-адрес php, который обновляет время запуска обоих пользователей в одной таблице на основе их адресов электронной почты, как показано ниже. в моем php-коде для этого -

$stmt = $conn->prepare("update user_game_status 
                        set game_score=?,time=? 
                        where emailid=? 
                        and game_id=? 
                        and gstatus=1 
                        and gplay_code=?");

$stmt->bind_param("sssss", $game_score,$time,$email,$game_id,$gplay_code);
$stmt->execute();

$rows=mysqli_affected_rows($conn);
$stmt->close();

Но проблема, с которой я столкнулся, заключается в том, что время обновляется только для 1 пользователя, что означает, что тот, кто первым вошел в игру, его время обновляется, а второй пользователь, присоединившийся к его времени, не обновляется. URL-адрес вызывается для обоих пользователей одновременно.

Может ли кто-нибудь показать мне путь, который мне не хватает. Спасибо

пожалуйста, дайте мне знать причину голосования -1

Navin Mishra 31.10.2018 12:01

я думаю, что задаю вопрос с правильным объяснением

Navin Mishra 31.10.2018 12:02

Этот код обновит только одну запись о людях. Вы называете это один раз для каждого игрока?

RiggsFolly 31.10.2018 12:03

@RiggsFolly да, из обоих пользовательских приложений индивидуально этот URL будет вызываться, но URL будет вызываться одновременно

Navin Mishra 31.10.2018 12:04

В то же время не должно быть проблемой. MySQL позаботится обо всем этом за вас. Вы уверены, что этот код был вызван обоими пользователями? Вы видите 2 записи в журнале apache, в которых говорится, что он был вызван дважды

RiggsFolly 31.10.2018 12:05

извините за вопрос, но где я могу увидеть журнал apache, я работаю на удаленном сервере в phpmyadmin

Navin Mishra 31.10.2018 12:08

Надеюсь либо по ssh, либо из админки

RiggsFolly 31.10.2018 12:09

хорошо, позволь мне проверить и подтвердить, спасибо '

Navin Mishra 31.10.2018 12:10

не получается войти в мой phpmyadmin

Navin Mishra 31.10.2018 13:11

phpMyAdmin - это инструмент, написанный на PHP для поддержки баз данных MySQL. Он ничего не регистрирует. Вам нужно уточнить у своего хоста, где они размещают файлы журналов Apache и PHP. При разработке вам обязательно нужно будет посмотреть файлы журналов PHP.

RiggsFolly 31.10.2018 15:32
1
10
39
1

Ответы 1

Как выглядит таблица user_game_status?

Вы можете использовать автоматическое обновление для datetime и timestamp, поэтому вам не нужно включать это в свой запрос. Если кто-нибудь изменит эту строку, время обновится автоматически. Подробнее: https://dev.mysql.com/doc/refman/8.0/en/timestamp-initialization.html

Пример:

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

привет, согласно моему приложению, когда оба пользователя присоединяются к одной игре, то вызывается только мой URL-адрес, и необходимо обновить время начала игры обоих пользователей на основе их emailid в той же таблице

Navin Mishra 31.10.2018 13:32

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

Navin Mishra 31.10.2018 13:34

Другие вопросы по теме