将数组插入数据库表

时间:2017-01-13 13:39:56

标签: php mysqli

我正在尝试将数组插入到数据库中的表中。我正在动态添加inout字段,以便我可以添加团队名称。我需要做的是将这些输入插入到表中的单独行中,但我要么得到' array'在一列或多个空字段中。

我在这里:

表单的HTML:

<div id="exercises">
    <div class="team">
        <input type="text" name="teamName[]" />
        <button class="remove">x</button>
    </div>
</div>

处理创建新输入的JQuery:

<script type="text/javascript">
$('#add_exercise').on('click', function() { 
    $('#exercises').append('<div class="team"><input type="text" name="teamName[]"><button class="remove">x</button></div>');
    return false; //prevent form submission
});

$('#exercises').on('click', '.remove', function() {
    $(this).parent().remove();
    return false; //prevent form submission
}); 
</script>

然后我想将它提交到数据库,所以这就是我所处的位置(没有安全性,并且我知道它对SQL注入是开放的。)

<?php 

// Config
include '../config.php';

// Get post data
$teamName = $_POST['teamName'];
$dashboardId = $_POST['dashboardId'];

// Check if the daashboard exists already
$sql = "INSERT INTO teams (team_name, dashboard_id) VALUES ('$teamName', '$dashboardId')";

if ($conn->query($sql) === TRUE) {
    echo 'good';
}

?>

如果我做了var_dump n测试提交,我会得到以下内容:

array(2) { [0]=> string(6) "team 1" [1]=> string(6) "team 2" }

所以我想插入一个名为&#39; team 1&#39;的行。另一个名为&#39; team 2&#39;

任何帮助都会非常感激,因为我有点卡住......

1 个答案:

答案 0 :(得分:1)

当名称为name="teamName[]时,$_POST['teamName']将是一个数组,因此您需要将其循环并逐个插入(或在批量插入查询中)。

示例:

$dashboardId = $_POST['dashboardId'];

foreach($_POST['teamName'] as $teamName) { 
    if (empty($teamName)) {
        // Empty value, continue to next iteration instead
        continue;
    }

    //your db code 
}

您说您知道代码中的SQL注入风险,所以我不会继续这样做。但我只想注意,如果任何一个名称都有一个'字符或以\结尾,那么您的代码就会中断,因为它不会被转义。