PHP отправляет записи в базу данных дважды

У меня есть игра, в которой вы можете отправить свой результат в базу данных, но по какой-то причине отправка запускается дважды. Каждая запись дублируется. Я видел похожие проблемы, опубликованные здесь, и решение было связано с проверкой 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);

?>

проверьте все, что может что-то спровоцировать. Либо через службу, mysql, js и т. д.

Funk Forty Niner 17.07.2018 17:52

Может быть, ваш браузер по какой-то причине отправляет запрос дважды? Проверьте свой apache access_log

Eduardo Escobar 17.07.2018 17:52

Возможно, вы дважды нажали кнопку отправки?

Luke 17.07.2018 17:56

Ваш сценарий подвержен риску Атака с использованием SQL-инъекции. Посмотрите, что случилось с Маленькие столики Бобби. Даже если вы избегаете ввода, это небезопасно! Используйте вместо этого подготовленные параметризованные операторы. ... о боже, я стал тэдманом.

IncredibleHat 17.07.2018 18:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
110
2

Ответы 2

Вы можете попробовать это в своем sql-запросе:

ЗАМЕНЯТЬ делает именно то, что делает INSERT, но не позволяет sql-запросу удваивать запись.

REPLACE into xmas (initials, email, score) values('$playerInitialsUC', '$playerEmail', '$playerScore')

Вы можете сказать мне, если это не сработало или это не то, что вам нужно :)

Или вы можете добавить этот запрос в конец вашего кода, чтобы сделать строки уникальными: (не уверен в этом):

ALTER TABLE xmas ADD UNIQUE( `initials`, `email`, `score`)

Да, оказалось, что кнопка отправки была слишком чувствительной, и клики регистрировались несколько раз. Спасибо всем.

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