我正在尝试将数组插入到数据库中的表中。我正在动态添加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;
任何帮助都会非常感激,因为我有点卡住......
答案 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注入风险,所以我不会继续这样做。但我只想注意,如果任何一个名称都有一个'
字符或以\
结尾,那么您的代码就会中断,因为它不会被转义。