2016-05-04 10 views
0

こんにちは私は与えられた入力からデータベースとテーブルを作成したいと同時に、データベースとテーブルがすでに存在するかどうかをチェックします。誰かが私を助けてくれますか?与えられた入力からデータベースとテーブルを作成する

<HTML> 

<form action="index.php" method="post"> 
Project No.:<input type="text" name="name"><br> 
Question: <input type="text" name="email"><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

</html> 
<?php 
session_start(); 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 

If(isset($_POST['submit'])) 
{ 
    $projno = $_POST['name']; 
    $question = $_POST['email']; 
    $_SESSION['proj'] = $projno; 
    $_SESSION['QA'] = $question; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$checkdb = "CREATE DATABASE IF NOT EXISTS ".$projno; 
if($conn->query($checkdb)===TRUE) 
{ 
    $dbname = $projno; 
    $conn = new mysqli($servername, $username, $password, $dbname); 
if ($tableExists = $conn->query("SHOW TABLES LIKE ".$question) > 0){ 

    $sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
firstname VARCHAR(30) NOT NULL, 
lastname VARCHAR(30) NOT NULL, 
email VARCHAR(50), 
reg_date TIMESTAMP 
)"; 

if ($conn->query($sql) === TRUE) { 
    echo "Table MyGuests created successfully"; 
} else { 
    echo "Error creating table: " . $conn->error; 
} 
} 

} 
else{ 
// Create database 
$sql = "CREATE DATABASE " . $projno; 
if ($conn->query($sql)===TRUE) { 
    echo "Database created successfully"; 
} else { 
    echo "Error creating database: " . $conn->error; 
} 
} 
} 
?> 

こんにちは、ここに私の更新コードです。あなたのおかげで、それはすでに動作するように助けてくれます。このエラーが発生する別の問題があります。 エラーの作成SQL構文にエラーがあります。 MariaDBサーバーのバージョンに対応するマニュアルをチェックし、正しい構文が1行目の '23992550'の近くで使用されるようにしてください。データベース名の入力は受け付けません。あなたが私を再び助けてくれることを願ってあなたが実際に同じ変数を取得しているので、

$conn = new mysqli($servername, $username, $password); 
... 
$conn = new mysqli($servername, $username, $password, $dbname); 

しかし、それは動作しません:事前

<HTML> 

<form action="index.php" method="post"> 
Project No.:<input type="text" name="name"><br> 
Question: <input type="text" name="email"><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

</html> 
<?php 
session_start(); 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 

If(isset($_POST['submit'])) 
{ 
    $projno = $_POST['name']; 
    $question = $_POST['email']; 
    $_SESSION['proj'] = $projno; 
    $_SESSION['QA'] = $question; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$checkdb = "CREATE DATABASE IF NOT EXISTS ".$projno; 
if($conn->query($checkdb)===True) 
{ 
    $conn->query("USE $projno"); 
    if ($conn->query("DESCRIBE " . $question)) 
{ 
    //Table exist 
     header('location:exp.php'); 
} 
else 
{ 
    $sql = "CREATE TABLE ".$question."(LIST VARCHAR(150) NOT NULL)"; 

    if ($conn->query($sql) === TRUE) 
    { 
     header('location:exp.php'); 
    } 
    else 
    { 
     echo "Error creating table: " . $conn->error; 
    } 
} 


} 
    else 
    { 
     echo "Error creating " . $conn->error; 
    } 
} 
?> 
+0

それがひどく(ハッカーに優しい)SQLインジェクションの影響を受けやすく、(単一のフォームのために複数のデータベースを)設計されたとしてあなたは、生産におけるそのようなものを置くべきではありません、一切の検証が含まれていません。あなたがハッキングしてそれを修正しても機能しないとしても、すぐに管理できなくなるでしょう。 –

答えて

0

でのおかげであなたは再接続確立してデータベースを選択しようとしています。代わりに、元の接続を再利用する必要があります。

$conn = new mysqli($servername, $username, $password); 
... 
// After CREATE DATABASE 
$conn->query("USE $dbname"); 

または

// ... 
$conn->select_db($dbname); 
+0

この作品..ありがとうたくさん –

0

使用DESCRIBEキーワードテーブルをチェックするために存在するかではありません。

以下のコードを使用してください。

if ($conn->query("DESCRIBE " . $question)) 
{ 
    //Table exist 
    echo "Table exist"; 
} 
else 
{ 
    $sql = "CREATE TABLE MyGuests (
      id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      firstname VARCHAR(30) NOT NULL, 
      lastname VARCHAR(30) NOT NULL, 
      email VARCHAR(50), 
      reg_date TIMESTAMP 
      )"; 

    if ($conn->query($sql) === TRUE) 
    { 
     echo "Table MyGuests created successfully"; 
    } 
    else 
    { 
     echo "Error creating table: " . $conn->error; 
    } 
} 
+0

私は自分のローカルとその仕事でそれをテストしている。 @Jan Aranas – RJParikh

+0

はいこれはテーブルのチェックで動作します..ありがとうございました。この1つも悲しそうに私は2つのチェックを与えることができませんでした:(申し訳ありませんので、私はデータベースへの接続を作成する際に私の冗長性を修正した答えにチェックを与えた..答えて。 –

関連する問題