Почему моя форма не загружается в мою базу данных? после отправки база данных все еще пуста - PullRequest
0 голосов
/ 25 мая 2020

Когда я запускаю этот код, все идет нормально. Это дает мне сообщение «Новая запись успешно вставлена». Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я go захожу в свою базу данных, чтобы проверить это. Он по-прежнему пуст, информация, которую я ввел в поля ввода, не отображается в моей базе данных. Просто пустая база данных. Я новичок в программировании, поэтому, пожалуйста, потерпите меня, если я неправильно употребил некоторые слова или не совсем понимаю свои ошибки.

<!DOCTYPE HTML>
    <html>
    <head>
      <title>Sign Up Form</title>
      <meta charset="utf-8"> 
      <link rel="stylesheet" href="SignUp.css" type="text/css">
    </head>
    <body>
     <form action="insert.php" method="POST">
      <table>
      <tr>
        <td style="color:white">Username :</td>
        <td><input type="text" name="Username" required></td>
       </tr>
       <tr>
        <td style="color:white">voornaam :</td>
        <td><input type="text" name="Voornaam" required></td>
       </tr>
       <tr>
        <td style="color:white">Achternaam :</td>
        <td><input type="text" name="Achternaam" required></td>
       </tr>
       <tr>
        <td style="color:white">Wachtwoord :</td>
        <td><input type="password" name="Wachtwoord" required></td>
       </tr>
       <tr>
        <td style="color:white">Adres :</td>
        <td><input type="text" name="Adress" required></td>
       </tr> 
       <tr>
        <td style="color:white">Telefoon nummer :</td>
        <td>
         <select name="Telcode" required>
          <option selected hidden value="">Select Code</option>
          <option value="297">297</option>
         </select>
         <input type="phone" name="Telnummer" required>
        </td>
       </tr>
       <tr>
        <td><input type="submit" value="Submit"></td>
       </tr>
      </table>
     </form>
    </body>
    </html>


    <?php
    $Voornaam = $_POST['Voornaam'];
    $Username = $_POST['Username'];
    $Achternaam = $_POST['Achternaam'];
    $Wachtwoord = $_POST['Wachtwoord'];
    $Adress = $_POST['Adress'];
    $Telcode = $_POST['Telcode'];
    $Telnummer = $_POST['Telnummer'];
    if (!empty($Voornaam) || !empty($Achternaam) || !empty($Wachtwoord) || !empty($Adress) || !empty($Telcode) || !empty($Telnummer) || !empty($Username)) 
    {
        $host = "localhost";
        $dbUsername = "root";
        $dbPassword = "root"; 
        $dbname = "gevuldetomaat"; 



        $conn = new mysqli($host, $dbUsername, $dbPassword, $dbname);
        if ($conn->connect_error)   {
         die("Connection failed: ". $conn->connect_error);
                                    } else      { 

         $SELECT = "SELECT Username From klant Where Username = ? Limit 1";
         $INSERT = "INSERT INTO klant (Wachtwoord, Achternaam, Voornaam, Telnummer, Telcode, Username, Adress) values(?, ?, ?, ?, ?, ?, ?)";


         $stmt = $conn->prepare($SELECT);
         $stmt->bind_param("s", $Username);
         $stmt->execute();
         $stmt->bind_result($Username);
         $stmt->store_result();
           $rnum = $stmt->num_rows; 
         if ($rnum==0) 
                    {
          $stmt->close();
          $stmt = $conn->prepare($INSERT);
          $stmt->bind_param("sssiiss", $Wachtwoord, $Achternaam, $Voornaam, $Telnummer, $Telcode, $Username, $Adress);
          $stmt->execute();
          echo "New record inserted sucessfully";
                    } 
         else   {
          echo "Someone already registered using this name";
                }
         $stmt->close();
         $conn->close();
                                                    }

    } 
    else    {
        echo "All fields are required";
        die();
            }
    ?>

Ответы [ 2 ]

0 голосов
/ 25 мая 2020

Похоже, что вы столкнулись с той вилкой, где работает INSERT SQL, но вы печатаете сообщение об успешном завершении, не проверяя, действительно ли оно было успешно вставлено

После каждого mysqli_stmt::execute(), вам следует подумать о проверке переменной mysqli_stmt::$errno, чтобы узнать, была ли ошибка ($errno - сокращение от «номер ошибки», если он ноль, ошибок не было)

Что-то вроде этого должно сказать подробнее об ошибке, которая происходит:

if ($rnum == 0) {
    $stmt->close();
    $stmt = $conn->prepare($INSERT);
    $stmt->bind_param("sssiiss", $Wachtwoord, $Achternaam, $Voornaam, $Telnummer, $Telcode, $Username, $Adress);

    $stmt->execute(); // Run the INSERT statement
    if ($stmt->errno) { // Check for errors
        die("Error in inserting: " . $stmt->error); // Print last error
    } else { // No errors
        echo "New record inserted sucessfully"; // Success message
    }
} else {
    echo "Someone already registered using this name";
}

Я сделал это только для оператора INSERT здесь, но вам следует подумать о том, чтобы сделать что-то подобное и для оператора SELECT

0 голосов
/ 25 мая 2020

В настоящее время строка echo "New record inserted sucessfully"; будет возвращаться, даже если запрос завершился неудачно, поскольку нет проверки, чтобы узнать, действительно ли запрос был успешным, и поэтому он возвращает это значение.

Чтобы проверить, был ли запрос произошла ошибка, нужно добавить $stmt->error. Скорее всего, при попытке вставить данные в базе данных возникает ошибка. Скорее всего, из того, что я могу сказать, ошибка в Telnumber и Telcode, поскольку они обрабатываются как целые числа, а не строки в вашем подготовленном операторе. Телефонные номера следует рассматривать как строки, поскольку вы не выполняете никаких математических операций с числами, и иногда их можно отформатировать, чтобы разрешить такие вещи, как тире, пробелы, круглые скобки и т. Д. c.

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