私は.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個の入力を有するが、単一のものは表に挿入されていません。これを行う正しい方法は何ですか?
ルーカス、それは答えられました。タイトルや質問にはステータスは必要ありません。 – Drew
矢印の下に緑のチェックマークが付いたマーク・ラヴィの回答:p – Drew
**警告**:「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