Почему мой оператор php pdo дважды вставляется в БД

У меня есть приложение для Android, которое пытается вставить информацию в базу данных. У меня был php REST API, который отлично работал БЕЗ PDO. Я решил попробовать переключиться на подготовленные операторы PDO, и у меня начались некоторые проблемы. Я использую mysql_query для вставки информации в базу данных перед переключением на PDO. У меня такое чувство, что это будет очень маленькое и простое исправление. пожалуйста, не рви меня слишком сильно.

что я читал

PDO Вставка дважды

Ошибка инструкции PHP PDO

Перезапись URL с помощью .htaccess

что я сделал для отладки

1) Я выполнил каждый оператор только один раз.

2) у меня нет правил перезаписи в моих файлах .htaccess:

# Do not remove this line or mod_rewrite rules and search engine friendly URLs will stop working
RewriteBase /

^^ это все, что есть в моем файле htaccess

3) из двух ($ stmt и $ sportStmt) я удалил второй ($ sportStmt), а начальный оператор вставки вставлен только один раз, как и нужно.

4) Я проверил на стороне своего приложения, не делал ли я почтовый запрос дважды, но я этого не делал. (также очевидно, когда я удалил второй оператор вставки)

5) в случае, если вам интересно, связаны ли это отношения таблиц (pmk, fmk, триггеры) ... сценарий отлично работает, прежде чем я решил переключиться на подготовленные операторы PDO.

это мой код:

    <?PHP
include_once("connection2.php");

//prepare statement
    if (isset($_POST['sports'])){

    try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    switch ($_POST['sports']){
        case hockey:
        $stmt = $conn->prepare("INSERT INTO hockey (name, age, league) 
                                VALUES (:name, :age, :league)");
        break;
        case soccer:
        $stmt = $conn->prepare("INSERT INTO soccer (name, age, league) 
                                VALUES (:name, :age, :league)");
        break;
        case basketball:
        $stmt = $conn->prepare("INSERT INTO basketball (name, age, league) 
                                VALUES (:name, :age, :league)");
        break;
        }

    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':age', $age);
    $stmt->bindParam(':league', $league);


    //insert Sport
    $playerSports = $_POST['sports'];
    $playerSports = trim($playerSports, '[]');
    $sports = explode(',', $playerSports);

    foreach ($sports as $value){
        $value = trim($value, ' ');
        switch($value){
            case hockey:
                $value = "hockey";
                break;
            case soccer;
                $value = "soccer";
                break;
            case basketball;
                $value = "basketball";
                break;
        }

        $sportStmt = $conn->prepare("INSERT INTO playerSports (name, sports) VALUES (:name, :sports)
                                    ON DUPLICATE KEY UPDATE name = VALUES(name), sports = VALUES(sports);");
        $sportStmt->bindParam(':sports', $value);
        $sportStmt->bindParam(':name', $name);
        $name = $_POST['name'];
        $sportStmt->execute();
    }


    echo "New records created successfully";
    }
catch(PDOException $e)
    {
    echo "Error: " . $e->getMessage();
    }

    } else {
        echo "did not receive category";
    }



$conn = null;
?>

см. ошибку опечатки case hocket: также попробуйте добавить значения по умолчанию для ваших переключателей, даже если они ничего не делают

Bobby Axe 08.09.2018 21:59
$aoiStmt->execute(); должен быть sport?
u_mulder 08.09.2018 22:02

@u_mulder да, извините, я забыл это изменить, когда переключил поля, чтобы сделать его более понятным. я исправил это

karupu 08.09.2018 22:04

@BobbyAxe спасибо за совет по умолчанию, я немедленно это сделаю. этот переход был ошибкой, когда я переключал имена значений, чтобы упростить понимание этого сообщения. извините за тип

karupu 08.09.2018 22:11
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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 и хотите разрабатывать...
1
4
54
0

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