2016-08-20 1 views
0

私は.phpファイル内にフォームを持っています。アクションでは、$ _POST変数を別の.phpファイルに送ります。ここでは、フォーム/入力結果をデータベーステーブルに追加します。文字列間の変数を含む 'for'ループによるMySQLテーブルへの挿入

しかし、ある特定の場所に問題があるようです。テーブルが正しく作成され、接続されています。しかし、私はデータを挿入することはできません。

元の.phpファイルからの入力です。彼らはミスなしで生成します。私は、変数を送信するの.phpファイル、私はテーブルを作成中

<div class="form-group"> 
    <input class="form-control" name="player<?php echo $i; ?>-fn" placeholder="First name" type="text" <?php if($i>5){echo "disabled ";}?> /> 
</div> 
<div class="form-group"> 
    <input class="form-control" name="player<?php echo $i; ?>-ln" placeholder="Last name" type="text" <?php if($i>5){echo "disabled ";}?> /> 
</div> 
<div class="form-group"> 
    <input class="form-control" name="player<?php echo $i; ?>-nr" placeholder="Number" type="number" <?php if($i>5){echo "disabled ";}?> /> 
</div> <?php } ?> 

$team_name = $_POST["team"]; 
$query = "CREATE TABLE " . strtolower($team_name) . " (id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,team_name varchar(255) NOT NULL,short_name varchar(255) NOT NULL)"; 
mysqli_query($_SESSION["mySqlLink"],$query); 

ここには、エラー、テーブルが作成さはありません。

エラーが(表に挿入しない)ここでと思われる:

for($i=1; $i<=12; $i++){ 
    if(!empty($_POST["player". $i ."-fn"]) && !empty($_POST["player". $i ."-ln"]) && !empty($_POST["player". $i ."-nr"])){ 
     $first_name = $_POST["player". $i ."-fn"]; 
     $last_name = $_POST["player". $i ."-ln"]; 
     $number = $_POST["player". $i ."-nr"]; 
     $query = "INSERT INTO ". $team_name ." (number,first_name,last_name) VALUES ('$number','$first_name','$last_name')"; 
     mysqli_query($_SESSION["mySqlLink"],$query); 
    } 
    else break; 
} 

Iは、12個の入力を有するが、単一のものは表に挿入されていません。これを行う正しい方法は何ですか?

+0

ルーカス、それは答えられました。タイトルや質問にはステータスは必要ありません。 – Drew

+0

矢印の下に緑のチェックマークが付いたマーク・ラヴィの回答:p – Drew

+0

**警告**:「mysqli」を使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart .prepared-statements.php)と['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 – tadman

答えて

1

表の列名(ID、TEAM_NAME、SHORT_NAME) あなたは(数、FIRST_NAME、LAST_NAME)を挿入しようとしている 挿入列名が同じテーブルの列名 コードである必要があり、以下のようになります:

for($i=1; $i<=12; $i++){ 
    if(!empty($_POST["player". $i ."-fn"]) && !empty($_POST["player". $i ."-ln"]) && !empty($_POST["player". $i ."-nr"])){ 
     $first_name = $_POST["player". $i ."-fn"]; 
     $last_name = $_POST["player". $i ."-ln"]; 
     $number = $_POST["player". $i ."-nr"]; 
     $query = "INSERT INTO ". $team_name ." (id,team_name,short_name) VALUES ('$number','$first_name','$last_name')"; 
     mysqli_query($_SESSION["mySqlLink"],$query); 
    } 
    else break; 
} 
+1

ああ私の神。そんなばかげたミス。ご連絡ありがとうございます。私は夢中になる。 –

関連する問題