2017-08-05 11 views
0

このコードでは、ユーザがテーブルに存在するかどうかをチェックし、ユーザのテーブルを作成しない場合はチェックする必要があります。今はテーブル$ MyServerに名前を付けるだけです。名前を変数$ MyServerにするにはどうしたらいいですか?上記の私のコメントにもかかわらずPHPで特定の変数(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

をそれは一般的に記念碑的に悪い考えです。 – Difster

+0

また、SQLインジェクション攻撃の可能性があることに注意してください。 –

+0

どうすれば自分自身を守ることができますか –

答えて

1

ユーザーごとに表を作成することはお勧めできません。あなたはすべてのユーザーのレコードを格納できる単一のテーブルを作成する必要があります

しかし、本当にこれをしたい場合。あなたは、値を取ることができ

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

あなたの変数を行う"'を変更する必要があるの違いを参照してください:あなたは、各ユーザーのためのテーブルを作成している場合は、あなたのデータ構造を評価する必要が

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

0

、ここにあなたが探しているものです:今、「$ MyServerを」は、もはや文字列が、実際の変数と見られていることに注意してくださいません。

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

これは動作しません。 –

関連する問題