У меня есть игра, в которой вы можете отправить свой результат в базу данных, но по какой-то причине отправка запускается дважды. Каждая запись дублируется. Я видел похожие проблемы, опубликованные здесь, и решение было связано с проверкой if / else в конце, но я не вижу проблемы.
Это мой PHP-код, который дублирует записи, или мое игровое приложение?
<?php
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "xxx";
$port = "xxx";
$link = mysqli_connect($servername, $username, $password, $dbname, $port);
// Security
$playerInitials = mysqli_real_escape_string($link,$_REQUEST['initials']);
$playerEmail = mysqli_real_escape_string($link,$_REQUEST['email']);
$playerScore = mysqli_real_escape_string($link,$_REQUEST['score']);
// Convert Initials to Upper Case
$playerInitialsUC = strtoupper($playerInitials);
$sql = "INSERT INTO xmas (initials, email, score)
VALUES ('$playerInitialsUC', '$playerEmail', '$playerScore')";
if (mysqli_query($link, $sql)){
echo "Records added successfully.";
} else{
echo "ERROR: " . mysqli_error($link);
}
mysqli_close($link);
?>
Может быть, ваш браузер по какой-то причине отправляет запрос дважды? Проверьте свой apache access_log
Возможно, вы дважды нажали кнопку отправки?
Ваш сценарий подвержен риску Атака с использованием SQL-инъекции. Посмотрите, что случилось с Маленькие столики Бобби. Даже если вы избегаете ввода, это небезопасно! Используйте вместо этого подготовленные параметризованные операторы. ... о боже, я стал тэдманом.






Вы можете попробовать это в своем sql-запросе:
ЗАМЕНЯТЬ делает именно то, что делает INSERT, но не позволяет sql-запросу удваивать запись.
REPLACE into xmas (initials, email, score) values('$playerInitialsUC', '$playerEmail', '$playerScore')
Вы можете сказать мне, если это не сработало или это не то, что вам нужно :)
Или вы можете добавить этот запрос в конец вашего кода, чтобы сделать строки уникальными: (не уверен в этом):
ALTER TABLE xmas ADD UNIQUE( `initials`, `email`, `score`)
Да, оказалось, что кнопка отправки была слишком чувствительной, и клики регистрировались несколько раз. Спасибо всем.
проверьте все, что может что-то спровоцировать. Либо через службу, mysql, js и т. д.