2017-12-02 14 views
0

私は奇妙な問題があります。PHP MySQL - スクリプトの特定の部分を削除できません

基本的に私はユーザーがサインアップできるページを持っています。情報はMySQLデータベースに送られ、そこに格納されます。ページ上で作業が行われる前に、そのテーブルがすでに存在する場合は、短いスクリプトを変更したいと思っています。存在しない場合は作成され、存在する場合は次のタスクに進みます。

ただし、「レポート結果」の部分を削除すると何らかの理由でエラーが発生します(下記のスクリプトを参照)。私が削除したい理由は基本的にユーザーがテーブルが作成されたばかりであることを知る必要がないからです。

エラーを報告しないでこのパーツを削除できないのはなぜですか?

<?php 

$table  =  "database"; 

$servername  = "xxx"; 
$username = "xxx"; 
$password = "xxx"; 
$dbname    = "xxx"; 

// Connect to database 
$conn = new mysqli($xxx, $xxx, $xxx, $xxx); 

// Create table if it does not exist 
$sql = "CREATE TABLE IF NOT EXISTS $table (
     id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
     example-1VARCHAR(30) NOT NULL, 
     example-2 VARCHAR(30) NOT NULL, 
     example-3 VARCHAR(50), 
     example-4 VARCHAR(50), 
     example-5 VARCHAR(50), 
     reg_date TIMESTAMP 
     )"; 

// Report result <---------------------- PROBLEM HERE 
if ($conn->query($sql) === TRUE) { 
    echo "Table created successfully"; 
    } else { 
    echo "Error creating table: " . $conn->error; 
} 

// Insert data into table 
if (isset($_POST["submit"])) { 

    $example-1  = $_POST['example-1']; 
    $example-2  = $_POST['example-2']; 
    $example-3  = $_POST['example-3']; 
    $example-4  = $_POST['example-4']; 
    $example-5  = $_POST['example-5']; 

    // Check if already exist in table 
    $query = "SELECT * from $table where email ='$example-3'"; 

    if ($result=mysqli_query($conn,$query)) 

     { 
      if(mysqli_num_rows($result) > 0) { 

      // If already exist in table 
      echo "Already exists"; 

     } else 

      // If doesn't exist, add to table 
      $sql = "INSERT INTO $table (example-1, example-2, example-3, example-4, example-5) 
      VALUES ('".$example-1."', '".$example-2."', '".$example-3."', '".$example-4."', '".$example-5."')"; 

      if ($conn->query($sql) === TRUE) { 
       echo "New record created successfully"; 
      } 

     } else 

     // If everything fails for technical reason 
     echo "Query Failed."; 

} 

$conn->close(); 

?> 
+0

'$例-2 '、などとなり、無効な変数名です。あなたはどんなエラーを受けていますか?また、SQLインジェクションも可能です。 – chris85

答えて

2

"レポート結果"ブロックを削除する際には、少なくともこの部分を保持する必要があります。$conn->query($sql);。それ以外の場合は、テーブルが全く作成されません。..

そして@ chris85ごとに変数名が含まれているマイナス- PHP Manual Language Reference Variables Basics

を見てはいけませんコメント声明$example-2$example minus twoとして数学的な操作を実行し、そう$example = 5が、その後結果場合は3です。これはあなたが望まないものです。

より良い変数名は$example_2または$example2

+0

高尚な男!主な問題は、私が$ conn-> query($ sql)を使用しなければならないことを知らなかったことです。 ...私はこれで新しいです...すべてがうまくいまいましい、もう一度やましい! – Lavonen

関連する問題