簡體   English   中英

SQL數據庫未存儲用戶輸入

[英]SQL Database not storing user inputs

我創建了一個注冊表單,其中包含用戶名,用戶名,電子郵件和密碼。 我還使用XAMPP控制面板創建了一個sql數據庫,並將其命名為數據庫“ registration”,並創建了一個名為“ users”的表來存儲所有輸入。

當用戶輸入此數據時,應該向他們顯示登錄頁面,並在后台將數據存儲到數據庫中。但是當我打開phpmyadmin檢查表時,沒有保存任何數據。

下面是我用於將用戶輸入發送到數據庫的代碼,該數據庫是我的“ server.php”文件:

<?php
session_start();

// initializing variables
$name = "";
$email = "";
$username = "";
$errors = array(); 

// connect to the database
$db = mysqli_connect('localhost', 'root', 'root', 'registration');

// REGISTER USER
if (isset($_POST['reg_user'])) {
  // receive all input values from the form
  $name = mysqli_real_escape_string($db, $_POST['name']); 
  $email = mysqli_real_escape_string($db, $_POST['email']);
  $username = mysqli_real_escape_string($db, $_POST['username']);
  $password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
  $password_2 = mysqli_real_escape_string($db, $_POST['password_2']);

  // form validation: ensure that the form is correctly filled ...
  // by adding (array_push()) corresponding error unto $errors array
  if (empty($name)) { array_push($errors, "Name is required");  
  }
  if (empty($email)) { array_push($errors, "Email is required"); 
  }
  if (empty($username)) { array_push($errors, "Username is required"); }
  if (empty($password_1)) { array_push($errors, "Password is required"); }
  if ($password_1 != $password_2) {
    array_push($errors, "The two passwords do not match");
  }

  // first check the database to make sure 
  // a user does not already exist with the same username and/or email
  $user_check_query = "SELECT * FROM users WHERE username='$username' OR email='$email' LIMIT 1";
  $result = mysqli_query($db, $user_check_query);
  $user = mysqli_fetch_assoc($result);

  if ($user) { // if user exists
    if ($user['username'] === $username) {
      array_push($errors, "Username already exists");
    }

    if ($user['email'] === $email) {
      array_push($errors, "email already exists");
    }
  }

  // Finally, register user if there are no errors in the form
  if (count($errors) == 0) {
    $password = md5($password_1);//encrypt the password before saving in the database

    $query = "INSERT INTO users (name, email, username, password) 
              VALUES('$name', '$email', '$username', '$password')";
    mysqli_query($db, $query);
    $_SESSION['username'] = $username;
    $_SESSION['success'] = "You are now logged in";
    header('location: login.php');
  }
}

// ... 
// ... 

// LOGIN USER
if (isset($_POST['login_user'])) {
  $username = mysqli_real_escape_string($db, $_POST['username']);
  $password = mysqli_real_escape_string($db, $_POST['password']);

  if (empty($username)) {
    array_push($errors, "Username is required");
  }
  if (empty($password)) {
    array_push($errors, "Password is required");
  }

  if (count($errors) == 0) {
    $password = md5($password);
    $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
    $results = mysqli_query($db, $query);
    if (mysqli_num_rows($results) == 1) {
      $_SESSION['username'] = $username;
      $_SESSION['success'] = "You are now logged in";
      header('location: https://georginahughes48.wixsite.com/makeupyourmind');
    }else {
        array_push($errors, "Wrong username/password combination");
    }
  }
}

?>

請讓我知道是否需要任何其他代碼來幫助我解決此問題。。謝謝!

連接代碼后添加此行

if($db->connect_errno)
{
    echo "Error: ( " .$db->errorno. " )". $db->error;
    die;
}

只需替換此代碼

 if (count($errors) == 0) {
    $password = md5($password_1);//encrypt the password before saving in the database

    $query = "INSERT INTO users (name, email, username, password) 
              VALUES('$name', '$email', '$username', '$password')";
    if( mysqli_query($db, $query))
    {
       $_SESSION['username'] = $username;
       $_SESSION['success'] = "You are now logged in";
       header('location: login.php');
   }
   else
   {
      echo mysqli_error($db);
   }
  }
}

檢查是否提供任何錯誤。

在try catch塊中嘗試您的代碼。 用以下內容替換您的寄存器部分:

    // Finally, register user if there are no errors in the form
    try {
      if (count($errors) == 0) {
        $password = md5($password_1);//encrypt the password before saving in the database

        $query = "INSERT INTO users (name, email, username, password) 
                  VALUES('$name', '$email', '$username', '$password')";
        mysqli_query($db, $query);
        $_SESSION['username'] = $username;
        $_SESSION['success'] = "You are now logged in";
        header('location: login.php');
      }
   } catch (Exception $e) {
        echo 'Caught exception: ',  $e->getMessage(), "\n";
   }

如果兩者之間有任何中斷,這將給您錯誤,否則您的代碼似乎還可以。

步驟1:更改代碼,如下所示:

        <?php
        session_start();

        // initializing variables
        $name = "";
        $email = "";
        $username = "";
        $errors = array(); 

        // connect to the database
        $db = mysqli_connect('localhost', 'root', '', 'registration');

        if (!$db) {
            die("Connection failed: " . mysqli_connect_error());
        }

        // REGISTER USER
        if (isset($_POST['reg_user'])) {
          // receive all input values from the form
          $name = mysqli_real_escape_string($db, $_POST['name']); 
          $email = mysqli_real_escape_string($db, $_POST['email']);
          $username = mysqli_real_escape_string($db, $_POST['username']);
          $password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
          $password_2 = mysqli_real_escape_string($db, $_POST['password_2']);

          // form validation: ensure that the form is correctly filled ...
          // by adding (array_push()) corresponding error unto $errors array
          if (empty($name)) { array_push($errors, "Name is required");  
          }
          if (empty($email)) { array_push($errors, "Email is required"); 
          }
          if (empty($username)) { array_push($errors, "Username is required"); }
          if (empty($password_1)) { array_push($errors, "Password is required"); }
          if ($password_1 != $password_2) {
            array_push($errors, "The two passwords do not match");
          }

          // first check the database to make sure 
          // a user does not already exist with the same username and/or email
          $user_check_query = "SELECT * FROM users WHERE username='$username' OR email='$email' LIMIT 1";
          $result = mysqli_query($db, $user_check_query);
          $user = mysqli_fetch_assoc($result);

          if ($user) { // if user exists
            if ($user['username'] === $username) {
              array_push($errors, "Username already exists");
            }

            if ($user['email'] === $email) {
              array_push($errors, "email already exists");
            }
          }

          // Finally, register user if there are no errors in the form
          if (count($errors) == 0) {
            $password = md5($password_1);//encrypt the password before saving in the database

            $query = "INSERT INTO users (name, email, username, password) 
                      VALUES('$name', '$email', '$username', '$password')";
                if( mysqli_query($db, $query))
                {
                   $_SESSION['username'] = $username;
                   $_SESSION['success'] = "You are now logged in";
                   header('location: login.php');
               }
               else
               {
                  echo mysqli_error($db);
               }
          }
        }

        // ... 
        // ... 

        // LOGIN USER
        if (isset($_POST['login_user'])) {
          $username = mysqli_real_escape_string($db, $_POST['username']);
          $password = mysqli_real_escape_string($db, $_POST['password']);

          if (empty($username)) {
            array_push($errors, "Username is required");
          }
          if (empty($password)) {
            array_push($errors, "Password is required");
          }

          if (count($errors) == 0) {
            $password = md5($password);
            $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
            $results = mysqli_query($db, $query);
            if (mysqli_num_rows($results) == 1) {
              $_SESSION['username'] = $username;
              $_SESSION['success'] = "You are now logged in";
              header('location: https://georginahughes48.wixsite.com/makeupyourmind');
            }else {
                array_push($errors, "Wrong username/password combination");
            }
          }
        }

        ?>

假設沒有mysql的密碼。

步驟2:重新檢查mysql連接和表名稱的大小寫和拼寫

步驟3:檢查表格中的可為空字段,字段類型和長度。 如果您有主鍵,請檢查是否存在自動增量。 希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM