2016-07-13 10 views
1

i zu erstellen haben eine Tabelle tracker_item, die verschiedene Datenbanktabelle zu erstellen, wie diese nach trackeridnicht in der Lage MySQL-Tabelle

tracker_item 

id heading trackerid 
1 name   1 
2 location  1 
3 age   1 
4 candidate 2 
5 area   2 

Ich wünsche sieht die Parameter verwenden, die unter Rubrik enthalten sind. Eg acc zum tracker_item obigen Tabelle ich will, dass zwei Tabellen sollten

table1 

id name location age 


table 2 
id candidate area 

Der Code erstellt bekommen, dass ich versuchte, ist

$sql="SELECT * FROM `tracker_item` where trackerid='".$trackerid."' "; 
$result = mysqli_query($con, $sql); 
if(mysqli_num_rows($result)>0) 
    { 
     while($row = mysqli_fetch_assoc($result)) 
      { 
       echo $sql1 = "CREATE TABLE item (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 

         ". 

         $row['heading'] 


         ." VARCHAR(30) NOT NULL, 


       resume VARCHAR(50) 
        )"; 

      } 
       if (mysqli_query($con, $sql1)) 
        { 
         echo "Table created successfully"; 
        } 
       else 
        { 
         echo "Error creating table: " . mysqli_error($con); 
        } 
    } 

Ausgabe für $ sql1, die ich bekam, war

CREATE TABLE item (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL, resume VARCHAR(50)) 
CREATE TABLE item (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, location VARCHAR(30) NOT NULL, resume VARCHAR(50)) 
CREATE TABLE item (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, age VARCHAR(30) NOT NULL, resume VARCHAR(50)) 

Anstatt mehrere Tabellen möchte ich o/p von $ sql1 wie folgt aussehen, so dass eine Tabelle in der Datenbank

erstellt werden kann

Kann jemand bitte sagen, wie es

+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/de/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! –

+0

@Jay Blanchard dies ist nur ein Dummy, um an der Logik zu arbeiten, würde ich später um Sicherheit kümmern, würde mich freuen, wenn Sie mir mit dem Hauptproblem helfen könnten – sammy001

+0

[Deshalb wiederholen wir die SQL-Injektion Angriff Warnung.] (http://stackoverflow.com/questions/38297105/mysql-real-escape-string-not-working-for-this-specific-example-mysql-real-escap) –

Antwort

2

kann getan werden, Sie müssen nur Ihre while-Schleife ändern und die CREATE vor der Schleife zu tun. Sie wollen nur die Schleife Spalten über Verkettung hinzuzufügen:

if(mysqli_num_rows($result)>0) 
    { 
    $sql1 = "CREATE TABLE item (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, "; 
    while($row = mysqli_fetch_assoc($result)) 
    { 
     $sql1 .= $row['heading']." VARCHAR(30) NOT NULL, "; 
    } 
    $sql1 .= "resume VARCHAR(50)) "; 

    if (mysqli_query($con, $sql1)) 
    { 
     echo "Table created successfully"; 
    } 
    else 
    { 
     echo "Error creating table: " . mysqli_error($con); 
    } 
} 

Concatenate die gesamte Abfrage auf diese Weise und dann die Abfrage auszuführen.

Ausgang:

CREATE TABLE item (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL, location VARCHAR(30) NOT NULL, age VARCHAR(30) NOT NULL, candidate VARCHAR(30) NOT NULL, area VARCHAR(30) NOT NULL, resume VARCHAR(50)) 

Ich hasse es, wenn Leute sagen, "Ich bin nicht so weit entlang ..." oder "Diese Seite wird nicht öffentlich ..." oder "Es ist nur für die Schule, also Sicherheit spielt keine Rolle ...". Wenn Lehrer und Professoren nicht vom ersten Tag an über Sicherheit reden, machen sie es falsch. Fordere sie heraus. Sie lehren schlampige und gefährliche Programmierpraktiken, die Schüler später verlernen müssen. Ich hasse es auch, wenn Leute sagen, "Ich werde Sicherheit später ..." oder "Sicherheit ist nicht wichtig jetzt ..." oder "Ignorieren Sie das Sicherheitsrisiko ...". Wenn Sie beim ersten Mal keine Zeit haben, es richtig zu machen, wann finden Sie die Zeit, es später hinzuzufügen?

+0

Ich erhalte Syntaxfehler – sammy001

+0

Welche Syntaxfehler sind bekommst du? –

+1

Entschuldigung der Fehler war von meinem Ende, Sie Code hat funktioniert. Vielen Dank und über die Sicherheit, die Sie gesagt haben, würde sicherlich vom ersten Tag an daran arbeiten – sammy001