2017-08-05 1 views
0

Dieser Code sollte prüfen, ob ein Benutzer in einer Tabelle ist und wenn nicht eine Tabelle für den Benutzer erstellen. Im Moment nennt es nur die Tabelle $ MyServer. Wie mache ich das so? Der Name ist die Variable $ MyServer.Erstellen Sie eine Tabelle in PHP für bestimmte Variable (MySQLi)

<?php 
    require "conn.php"; 
    echo "debug 1"; 
    $stmt = $conn->prepare("SELECT * FROM UserData WHERE username = ?"); 
    $stmt->bind_param('s',$username); 
    $username = $_POST["username"]; 
    $stmt->execute(); 
    $stmt->store_result(); 

    echo "debug 2"; 
    if ($stmt->num_rows == 0){ // username not taken 
     echo "debug 3"; 
     $stmt2 = $conn->prepare("INSERT INTO UserData (username, password) VALUES (?, ?)"); 
     $password =($_POST["password"]); 
     $username =($_POST["username"]); 
     $stmt2->bind_param('ss', $username, $password); 
     $stmt2->execute(); 
     $MyServer =($_POST["username"]); 
     $sql = ('CREATE TABLE $MyServer (
      id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      username VARCHAR(30) NOT NULL 
      )'); 
     if($conn->query($sql) === TRUE){ 
      echo "Table created successfully"; 
     } else { 
      echo "Table is not created successfully "; 
     } 

     if ($stmt2->affected_rows == 1){ 
      echo 'Insert was successful.'; 

     }else{ echo 'Insert failed.'; 
      var_dump($stmt2); 
     } 
    }else{ echo 'That username exists already.';} 

    ?> 
+1

Wenn Sie für jeden Benutzer eine Tabelle erstellen, müssen Sie Ihre Datenstruktur bewerten Das ist im Allgemeinen eine monumental schlechte Idee. – Difster

+0

Beachten Sie auch, dass Sie für SQL-Injection-Angriffe weit offen sind, –

+0

Wie würde ich mich davor schützen? –

Antwort

1

Erstellen Tabelle für jeden Benutzer ist keine gute Idee. Sie müssen eine einzige Tabelle erstellen, in der Sie alle Benutzer Datensätze speichern können

Aber wenn Sie das wirklich tun wollen. Sie müssen ' zu " tun, um Ihre Variablenwert nehmen

$sql = "CREATE TABLE $MyServer (
      id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      username VARCHAR(30) NOT NULL 
      )"; 

Sehen Sie den Unterschied kann sich ändern:

http://docs.php.net/manual/en/language.types.string.php

0

Trotz meines Kommentars oben, hier ist das, was Sie suchen: Beachten Sie, dass jetzt „$ MyServer“ ist nicht mehr als eine Zeichenfolge zu sehen ist, sondern eine tatsächliche Variable.

$sql = ('CREATE TABLE ' . $MyServer . '(
     id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
     username VARCHAR(30) NOT NULL 
     )'); 
+0

Dies funktioniert nicht. –

Verwandte Themen