2017-01-31 13 views
-1

У меня есть два типа регистрационной формы для 2 типов пользователей, которые являются Surveyee и Client. У них есть сходство, когда дело доходит до того же поля, но у Surveyee больше. Поэтому я хочу, чтобы мой вопросник вставлял код, чтобы избежать одного столбца, поскольку он применим только для типа пользователя Client.Как пропустить некоторые столбцы таблицы при вставке в PHP?

<?php 
if(isset($_POST['submit'])){ 

    include("connection.php"); 
    $username = $_POST['username']; 
    $fullname = $_POST['fullname']; 
    $email = $_POST['email']; 
    $age = $_POST['age']; 
    $password = $_POST['password']; 
    $confirmpassword = $_POST['confirmpassword']; 
    $gender = $_POST['gender']; 
    $occupation = $_POST['occupation']; 

    $user = mysqli_query($con, "SELECT username from user WHERE username = '".$username."'"); 
    $count = mysqli_num_rows($user); 

    if($password != $confirmpassword){ 
     echo "Password does not match!"; 
    } 
    else{ 
     if($count != 0){ 
      echo "Username already exists!"; 
     } 

     else{ 

      $insert = mysqli_query($con, "INSERT INTO `user` (`username`,`fullname`,`email`,`companyname`,`age`,`password`,`gender`,`occupation`,`usertype`) VALUES (`$username`,`$fullname`,`$email`,``,`$age`,`$password`,$gender`,`$occupation`,`Surveyee`)"); 
      if(!$insert){ 
       echo mysqli_errno(); 
      } 
      else{ 
       echo "Records have been saved!"; 
      } 
     } 
    } 
} 
?> 

Вот мой стол дизайн enter image description here

Я пытался избежать имени столбца компании, но я получаю сообщение об ошибке. Предупреждение: mysqli_errno() ожидает точно 1 параметр, 0 заданный в строке 29, который является if (! $ Insert) { echo mysqli_errno(); } часть

$insert = mysqli_query($con, "INSERT INTO `user` (`username`,`fullname`,`email`,`companyname`,`age`,`password`,`gender`,`occupation`,`usertype`) VALUES (`$username`,`$fullname`,`$email`,``,`$age`,`$password`,$gender`,`$occupation`,`Surveyee`)"); 
     if(!$insert){ 
+0

** Никогда не храните незашифрованные пароли! ** Пожалуйста, используйте РНР [встроенные функции] (http://jayblanchard.net/proper_password_hashing_with_PHP.html) для обработки безопасности паролей , Если вы используете версию PHP менее 5.5, вы можете использовать 'password_hash()' [пакет совместимости] (https://github.com/ircmaxell/password_compat). Удостоверьтесь, что вы *** [не избегаете паролей] (http://stackoverflow.com/q/36628418/1011527) *** или используйте любой другой механизм очистки для них перед хэшированием. Выполнение этого * изменяет * пароль и вызывает ненужное дополнительное кодирование. –

+0

[Little Bobby] (http://bobby-tables.com/) говорит, что *** [ваш скрипт подвержен риску инъекций SQL.] (Http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php) *** Узнайте о [подготовленных] (http://en.wikipedia.org/wiki/Prepared_statement) операторах для [MySQLi] (http://php.net/manual /en/mysqli.quickstart.prepared-statements.php). Даже [избегая строки] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) небезопасно! [Не верьте?] (Http://stackoverflow.com/q/38297105/1011527) –

+0

Либо вставьте NULL, либо укажите отдельный запрос для каждого типа пользователя. –

ответ

1

Удалить Апострофы (') и используйте (обратные одиночные кавычки `) вложить столбец и имя таблицы.

$insert = mysqli_query($con, "INSERT INTO `user` (`username`,`fullname`,`email`,`companyname`,`age`,`password`,`gender`,`occupation`,`usertype`) VALUES ('$username','$fullname',$email','',$age','$password','$gender','$occupation','Surveyee')"); 

И

INSERT INTO (Column_Name, Column_Name) Table_Name VALUES ('',''); синтаксиса также является неправильным в соответствии с вашим данным запросом.

Изменить его,

INSERT INTO `Table_Name` (`Column_Name`, `Column_Name`) VALUES ('',''); 
+0

Сэр Я редактировал мой вопрос. Я по-прежнему получаю ту же ошибку, хотя :(@nana partykar – ranger

+0

@ranger: вы отредактировали это неправильно. Я уже написал в своем ответе. Только имя столбца должно быть заключено в обратную сторону. Не значения. запрос –

+1

этот ответ не заслужил нисходящего потока –