2017-01-31 3 views
-1

Ich habe zwei Arten von Anmeldeformular für zwei Benutzertypen, Surveyee und Client. Sie haben Ähnlichkeiten, wenn es darum geht, das gleiche Feld zu haben, aber Surveyee hat mehr. Daher möchte ich, dass mein Umfrageteilnehmer Code einfügt, um eine Spalte zu vermeiden, da sie nur für den Client-Benutzertyp gilt.Wie überspringe ich einige Tabellenspalten beim Einfügen in 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!"; 
      } 
     } 
    } 
} 
?> 

Hier ist mein Tisch Design enter image description here

Ich habe versucht, die Spalte Firmennamen zu vermeiden, aber ich erhalte eine Fehlermeldung. Warnung: mysqli_errno() erwartet genau 1 Parameter, 0 in Zeile 29, was das if (! $ Insert) ist { echo mysqli_errno(); } Teil

$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

** niemals Passwörter im Klartext gespeichert werden! ** Bitte verwenden Sie PHP [eingebaute Funktionen] (http://jayblanchard.net/proper_password_hashing_with_PHP.html) Passwortschutz zu handhaben . Wenn Sie eine PHP-Version kleiner als 5.5 verwenden, können Sie das 'password_hash()' [compatibility pack] (https://github.com/ircmaxell/password_compat) verwenden. Stellen Sie sicher, dass Sie *** [Kennwörter nicht entgehen] (http://Stackoverflow.com/q/36628418/1011527) *** oder verwenden Sie einen anderen Bereinigungsmechanismus vor dem Hashing. Wenn Sie dies tun, * ändert * das Passwort und verursacht unnötige zusätzliche Codierung. –

+0

[Little Bobby] (http://bobby-tables.com/) sagt *** [Ihr Skript ist für SQL Injection Attacks gefährdet.] (Http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php *** Erfahren Sie mehr über [vorbereitete] (http://en.wikipedia.org/wiki/Prepared_statement) Anweisungen für [MySQLi] (http://php.net/manual /mysqli.quickstart.prepared-statements.php). Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! [Glauben Sie es nicht?] (Http://stackoverflow.com/q/38297105/1011527) –

+0

Fügen Sie entweder eine NULL ein oder haben Sie eine separate Abfrage für jeden Benutzertyp. –

Antwort

1

Apostrophe (') entfernen und Graviszeichen (`) Verwenden Sie Spalten- und Tabellennamen zu umschließen.

$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')"); 

Und

INSERT INTO (Column_Name, Column_Name) Table_Name VALUES ('',''); Syntax ist auch falsch entsprechend Ihrer angegebenen Abfrage.

ändern es zu,

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

Sir Ich habe meine Frage bearbeitet. Ich bekomme immer noch den gleichen Fehler :(@nana partykar – ranger

+0

@ranger: Sie haben es falsch bearbeitet. Ich schrieb bereits in meiner Antwort. Nur Spaltenname muss in Backtick einschließen. Nicht Werte. Sie haben auch für Werte. Überprüfen Sie meine query –

+1

diese antwort verdient keinen runterschlag –

Verwandte Themen