Вставьте данные в базу данных MySQL из формы PHP с помощью (SELECT) и (INSERT INTO) - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть класс, где мне нужно создать сайт с базами данных PHP и MySQL.Проблема в том, что я не могу вставить данные из формы PHP в мою базу данных.Пользователю предлагается написать свое имя пользователя и пароль, после чего ему предлагается ввести различные значения, которые будут вставлены в базу данных.С помощью имени пользователя и пароля мне нужно найти идентификатор пользователя.С этим Id мне нужно вставить значения, введенные пользователем веб-сайта, в таблицу PERSONNAGE, где IdUser строки соответствует имени пользователя и паролю пользователя.Вот пример, чтобы объяснить себя лучше:

<form action="backend.php" method="POST">
        <fieldset>
            <legend>Creation Personnage</legend>

            <label> Username :
                <input type="text" name="nom" id="nom" />
            </label>

            <label> Password :
            <input type="text" name="mdp" id="mdp" />
            </label>

            <br><br><br><br>

            <label> Race :
            <input type="text" name="race" id="race" />
            </label>

            <label> Classe :
            <input type="text" name="classe" id="classe" />
            </label>

            <br><br>

            <label> Niveaux :
            <input type="text" name="niveaux" id="niveaux" />
            </label>

            <label> Experience :
            <input type="text" name="experience" id="experience" />
            </label>

            <br><br>

            <label> Sexe :
            <input type="text" name="sexe" id="sexe" />
            </label>

            <label> Age :
            <input type="text" name="age" id="age" />
            </label>

            <br><br>

            <label> Poids :
            <input type="text" name="poids" id="poids" />
            </label>

            <label> Peau :
            <input type="text" name="peau" id="peau" />
            </label>

            <br><br>

            <label> Cheveux :
            <input type="text" name="cheveux" id="cheveux" />
            </label>

            <label> Yeux :
            <input type="text" name="yeux" id="yeux" />
            </label>

            <br><br>

            <label> Religion :
            <input type="text" name="religion" id="religion" />
            </label>

            <label> Portrait :
            <input type="text" name="portrait" id="portrait" />
            </label>

            <br><br>


        </fieldset>

        <input type="submit" value="Ajouter">
    </div>

Вот backend.php:

<?php
        error_reporting(E_ALL);
        ini_set('display_errors', 1);
        include_once($_SERVER["DOCUMENT_ROOT"]."/cnxPDO.php");
        if($_SERVER['REQUEST_METHOD'] === 'POST')
        {
            $con = connecPDO("DD", "myparam");
            $nom = $_POST['nom'];
            $mdp = $_POST['mdp'];
            $race = $_POST['race'];
            $classe = $_POST['classe'];
            $niveaux = $_POST['niveaux'];
            $experience = $_POST['experience'];
            $sexe = $_POST['sexe'];
            $age = $_POST['age'];
            $poids = $_POST['poids'];
            $peau = $_POST['peau'];
            $cheveux = $_POST['cheveux'];
            $yeux = $_POST['yeux'];
            $religion = $_POST['religion'];
            $portrait = $_POST['portrait'];

            $idUser = 'SELECT idUser FROM USER WHERE nom = '$nom' AND mdp = '$mdp'';

            $sql='INSERT INTO PERSONNAGE(idUser,race,classe,niveaux,experience,sexe,age,poids,peau,cheveux,yeux,religion,portrait) 
                    VALUES(:idUser,:race,:classe,:niveaux,:experience,:sexe,:age,:poids,:peau,:cheveux,:yeux,:religion,:portrait)';

            $stmt = $con->prepare($sql);
            $stmt->BindParam(':idUser',$idUser);
            $stmt->BindParam(':race',$race);
            $stmt->BindParam(':classe',$classe);
            $stmt->BindParam(':niveaux',$niveaux);
            $stmt->BindParam(':experience',$experience);
            $stmt->BindParam(':sexe',$sexe);
            $stmt->BindParam(':age',$age);
            $stmt->BindParam(':poids',$poids);
            $stmt->BindParam(':peau',$peau);
            $stmt->BindParam(':cheveux',$cheveux);
            $stmt->BindParam(':yeux',$yeux);
            $stmt->BindParam(':religion',$religion);
            $stmt->BindParam(':portrait',$portrait);

            if (!$stmt->execute()) {
            echo "<br>PDO::errorCode():";
            print_r($stmt->errorCode());
            echo "<br>PDO::errorInfo():";
            print_r($stmt->errorInfo());
            }
            else { echo " <br> Sauvegarde effectuée";  }
        }
    ?>

Мне действительно нужна помощь, чтобы закончить это, или я не прохожу свой класс !!Дело в том, что наш учитель ничего не объясняет в классе, и мы должны найти все в Интернете!Я не понимаю 3/4 PHP и MySQL.Так что мне действительно нужна помощь!Еще много чего мне нужно сделать, но я начну с этого.

1 Ответ

0 голосов
/ 19 декабря 2018

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

Убедитесь, что имена столбцов точно совпадают с указанными именами столбцов в операторе, и убедитесь, что вы предоставляете данные только для столбцов, которые существуют втаблица.

Кроме того, если вы хотите, чтобы PHP интерполировал значения в переменных внутри вашего оператора SQL, вы ДОЛЖНЫ использовать двойные кавычки вместо одинарных кавычек для вашего оператора SQL.PHP будет интерполировать значения в переменные, только если вы используете двойные кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...