我在使用php脚本验证动态html表单时遇到问题。当我按下提交时,它表示存在未定义的索引,但是已定义此索引。我的问题与其他问题不同,因为我试图将所有这些代码写入单个php文件。我的代码出了什么问题?
我的HTML:
<form method="POST" action="/vehicles/add">
<div class="table-responsive">
<table class="table table-bordered" id="dynamic_field">
<tr>
<td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" required></td>
<td><button type="button" name="add" id="add" class="btn btn-success">Add More</button></td>
</tr>
</table>
</div>
<input type="submit" name="submit" class="btn btn-primary" value="Submit" />
</form>
我的jquery脚本:
$(document).ready(function(){
var i=1;
$('#add').click(function(){
i++;
$('#dynamic_field').append('<tr id="row'+i+'"><td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" /></td><td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>');
});
$(document).on('click', '.btn_remove', function(){
var button_id = $(this).attr("id");
$('#row'+button_id+'').remove();
});
});
我的PHP脚本:
if (isset($_POST['name'])) {
$fields = count($_POST["name"]);
for($i = 0; $i < $fields; $i++) {
if(trim($_POST["name"][$i] != ''))
{
mysqli_query($CONNECT, "INSERT INTO `vehicles` VALUES('', '$_POST[name][$i]', 0)");
}
}
}
我的错误:
PHP Notice: Undefined index: submit in
答案 0 :(得分:1)
对于多维数组,您需要使用复杂的字符串语法来替换该值,因此您必须在其周围加上大括号并引用文字索引。
mysqli_query($CONNECT, "INSERT INTO `vehicles` VALUES('', '{$_POST['name'][$i]}', 0)");
但最好使用准备好的查询来阻止SQL注入。
$stmt = mysqli_prepare($CONNECT, "INSERT INTO vehicles VALUES ('', ?, 0)");
mysqli_stmt_bind_param($stmt, 's', $name);
foreach ($_POST['name'] as $name) {
if (trim($name) != '') {
mysqli_stmt_execute($stmt);
}
}