【问题标题】:Inserting into MySQL table by 'for' loop with variables between strings通过'for'循环插入MySQL表,字符串之间有变量
【发布时间】: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 queriesbind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug切勿$_POST$_GET 数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。

标签: php mysql


【解决方案1】:

表列名(id,team_name,short_name) 您正在尝试插入 (number,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;
}

【讨论】:

  • 天哪。这么愚蠢的错误。谢谢你的通知。我感到很尴尬。
猜你喜欢
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
相关资源
最近更新 更多