【发布时间】:2016-08-20 09:34:00
【问题描述】:
我在 .php 文件中有一个表单。在操作时,我将 $_POST 变量发送到另一个 .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 } ?>
在我发送变量的 .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;
}
我有 12 个输入,但没有一个输入到表中。这样做的正确方法是什么?
【问题讨论】:
-
卢卡斯,有人回答了。我们不需要标题或问题中的状态。
-
用箭头下方的绿色复选标记标记 Ravi 的答案:p
-
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST或$_GET数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。