2016-10-21 4 views
0

Это, вероятно, самый заданный вопрос здесь. Я сделал простую регистрационную форму пользователя. Значения не вставляются в базу данных. Я использовал эхо, и запрос возвращает false. Форма работала задолго до того, но потом я отделил имя до имени и фамилии, а затем удалил предыдущую таблицу и сделал новую. Вот код регистрации страницы:MySQL Вставить запрос, возвращающий false

<!DOCTYPE html> 
    <?php 
     session_start(); 
     include('includes/connect.php'); 
    ?> 

<html> 
<head> 
    <?php 
     if(isset($_POST['register_ok'])){ 
       global $con; 

       $user_first_name = $_POST['user_first_name']; 
       $user_last_name = $_POST['user_last_name']; 
       $email = $_POST['email']; 
       $password = $_POST['password']; 
       echo "<script type='text/javascript'>alert(\"$user_first_name\");</script>"; //This echo is returning username successfully! 

       $query = "insert into user(user_first_name, user_last_name, user_email, password) values('$user_first_name', '$user_last_name', '$email', '$password')"; 

       if(mysqli_query($con, $query)){ 
         $_SESSION['user'] = 'user'; 
         $_SESSION['user_first_name'] = $user_first_name; 
         echo "header('Location:index.php')"; 

       } else { 
        echo "<script type='text/javascript'>alert(\"Values not inserted\");</script>"; //This is running which means query is not successfull. 
       } 
     } else { 
      echo "<script type='text/javascript'>alert(\"Page didn't receive post values\");</script>"; 
     } 
    ?> 

    <link rel="stylesheet" type="text/css" href="styles/register_style.css"> 

    <title>New User Registration</title> 
</head> 
<body> 
    <div class="wrapper"> 
     <header></header> 
     <div class="form_div"> 
      <div class="form"> 
       <form id="register_form" method="post" action="" autocomplete="autocomplete"> 
        <table> 
         <tr> 
          <td id="label">First Name: </td> 
          <td id="input"><input type="text" name="user_first_name" required="required" id="input_box"></td> 
         </tr> 
         <tr> 
          <td id="label">Last Name: </td> 
          <td id="input"><input type="text" name="user_last_name" required="required" id="input_box"></td> 
         </tr> 
         <tr> 
          <td id="label">Email: </td> 
          <td id="input"><input type="text" name="email" required="required" id="input_box"></td> 
         </tr> 
         <tr> 
          <td id="label">Password: </td> 
          <td id="input"><input type="password" name="password" id="input_box"></td> 
         </tr> 
         <tr> 
          <td id="label">Confirm Password: </td> 
          <td id="input"><input type="password" name="confirm_password" id="input_box"></td> 
         </tr> 
         <tr id="button_row"> 
          <td colspan="2"><input type="reset" value="Reset" id="button"> 
          <input type="submit" value="Register" id="button" name="register_ok"></td> 
         </tr> 
        </table> 
       </form> 
      </div> 
     </div> 
    </div> 
</body> 
</html> 

И это таблица: Table Structure таблица пуста, а первый сигнал тревоги возвращается пользователю первое имя, а второй бежит уведомление, когда запрос возвращает ложь. Он возвращает false. Я думаю, что это может быть опечатка, но не может сузить ее. Любая помощь приветствуется.

+0

для каких сеансов? –

+0

Добавьте 'echo (" Errormessage:% s \ n ", mysqli_error());' в вашем заявлении else, чтобы узнать, что происходит не так. – eol

+0

Сессии предназначены для хранения информации о пользователях, которые вошли в систему. – Vinay

ответ

3

Измените типы столбцов от int до varchar. Я говорю о строковых столбцах (именах и электронной почте). У Mysql есть возможность проверить тип данных, который вы пытаетесь вставить, и сбой, если они не совпадают.

+2

замечательные глаза, но все же 'Стол пуст ' – devpro

+0

Спасибо. Вот и все. – Vinay

0

Вы должны узнать о SQL инъекций, а также об обеспечении безопасности ваших паролей, используйте MySQLi подготовленных операторов/PDO, что когда-нибудь вы найдете легко узнать

<!DOCTYPE html> 
    <?php 
     session_start(); 
     include('includes/connect.php'); 
    ?> 

<html> 
<head> 
    <?php 
     if(isset($_POST['register_ok'])){ 

       $user_first_name = $_POST['user_first_name']; 
       $user_last_name = $_POST['user_last_name']; 
       $email = $_POST['email']; 
       $password = $_POST['password']; 

       // Lets encrypt the password; 

       $hash = pasword_hash($password,PASSWORD_DEFAULT); 


       // lets insert then 

       $query = $con->prepare("INSERT INTO user (user_id,user_first_name, user_last_name, user_email, password) VALUES(?,?,?,?)"); 
       $query->bind_param("ssss", $user_first_name, $user_last_name, $email,$hash); 
       $query->execute(); 

       if ($query->execute()) { 

        echo "<script type='text/javascript'>alert(\"$user_first_name\");</script>"; //This echo is returning username successfully! 
       } else { 
        echo "<script type='text/javascript'>alert(\"Values not inserted\");</script>"; //This is running which means query is not successfull. 
       } 




     } 

    ?> 

    <link rel="stylesheet" type="text/css" href="styles/register_style.css"> 

    <title>New User Registration</title> 
</head> 
<body> 
    <div class="wrapper"> 
     <header></header> 
     <div class="form_div"> 
      <div class="form"> 
       <form id="register_form" method="post" action="" autocomplete="autocomplete"> 
        <table> 
         <tr> 
          <td id="label">First Name: </td> 
          <td id="input"><input type="text" name="user_first_name" required="required" id="input_box"></td> 
         </tr> 
         <tr> 
          <td id="label">Last Name: </td> 
          <td id="input"><input type="text" name="user_last_name" required="required" id="input_box"></td> 
         </tr> 
         <tr> 
          <td id="label">Email: </td> 
          <td id="input"><input type="text" name="email" required="required" id="input_box"></td> 
         </tr> 
         <tr> 
          <td id="label">Password: </td> 
          <td id="input"><input type="password" name="password" id="input_box"></td> 
         </tr> 
         <tr> 
          <td id="label">Confirm Password: </td> 
          <td id="input"><input type="password" name="confirm_password" id="input_box"></td> 
         </tr> 
         <tr id="button_row"> 
          <td colspan="2"><input type="reset" value="Reset" id="button"> 
          <input type="submit" value="Register" id="button" name="register_ok"></td> 
         </tr> 
        </table> 
       </form> 
      </div> 
     </div> 
    </div> 
</body> 
</html> 

NB: Вы должны проверить, если имя пользователя не есть перед тем, как вставить.

1

Во-первых,

Изменить имя столбца из INT в VARCHAR используя этот запрос.

"ALTER TABLE `user` 
     MODIFY COLUMN `user_first_name` VARCHAR(225), 
     MODIFY COLUMN `user_last_name` VARCHAR(225), 
     MODIFY COLUMN `user_email` VARCHAR(225), 
     MODIFY COLUMN `password` VARCHAR(225);"; 

Во-вторых,

Вы держали id как для input & <td> как же в каждой строке. ID не может быть такой же.

Измените это.

<table> 
     <tr> 
      <td id="label1">First Name: </td> 
      <td id="input1"><input type="text" name="user_first_name" required="required" id="input_box1"></td> 
     </tr> 
     <tr> 
      <td id="label2">Last Name: </td> 
      <td id="input2"><input type="text" name="user_last_name" required="required" id="input_box2"></td> 
     </tr> 
     <tr> 
      <td id="label3">Email: </td> 
      <td id="input3"><input type="text" name="email" required="required" id="input_box3"></td> 
     </tr> 
     <tr> 
      <td id="label4">Password: </td> 
      <td id="input4"><input type="password" name="password" id="input_box4"></td> 
     </tr> 
     <tr> 
      <td id="label5">Confirm Password: </td> 
      <td id="input5"><input type="password" name="confirm_password" id="input_box5"></td> 
     </tr> 
     <tr id="button_row"> 
      <td colspan="2"><input type="reset" value="Reset" id="button"> 
      <input type="submit" value="Register" id="button" name="register_ok"></td> 
     </tr> 
    </table> 
Смежные вопросы