php - 如何使用 Mysql 和 PHP 插入具有相同名称的多行
问题描述
我有一个名为 dbcenter 的数据库和我有 Courses 表。我有表格可以同时插入多个课程名称。但是当我提交它时,只插入一个空行。这是我的输入表格:
<form action="COURSE.php" method="POST" enctype='multipart/form-data'>
<input type="text" name="listName[]" value="course 1">
<input type="text" name="listName[]" value="course 2">
<input type="text" name="listName[]" value="course 3">
<input type="submit" name="submit" value="insert">
</form>
还有我的 PHP 代码:
if(isset(filter_input_array(INPUT_POST)['submit'])){
$names[] = filter_input(INPUT_POST,'listName');
if(is_array($names)){
foreach ($names AS $key => $item){
$insertCourse = $con->prepare("INSERT INTO `courses`(`course_Name`)
VALUES ('$item')");
}
$insertCourse->execute();
if($insertCourse){
echo 'added';
}
}
else {
echo 'not array';
}
}
我试图从输入名称列表名称 [] 中删除 [],它插入数据但只插入最后一个文本框。任何人都可以帮助我吗?
解决方案
过滤输入有错误。
execute()
应该在 foreach 循环内。
也永远不要相信用户输入,使用参数化查询或转义mysqli::real_escape_string()
,以便正确转义用户输入:
if(isset(filter_input_array(INPUT_POST)['submit'])){
$names = filter_input_array(INPUT_POST)['listName'];
if(is_array($names)){
$insertCourse = $con->prepare("INSERT INTO `courses`(`course_Name`)
VALUES (?)");
$insertCourse->bind_param("s", $item);
foreach ($names AS $key => $item){
$res = $insertCourse->execute();
if($res){
echo 'added<br>';
}
}
$insertCourse->close();
}
else {
echo 'not array';
}
}
推荐阅读
- java - 如果我使用paintComponent,我如何显示一个JLabel?
- php - PHP从多维数组中删除整个数组
- kubernetes-helm - 如何从领事模板中读取掌舵值
- java - Google Fit SleepSession Reading - 5002: DataType 的名称与包名称不匹配
- python - 使用 OR 的多值 SQL 查询
- flutter - 输入'_InternalLinkedHashMap
' 不是类型 'FutureOr 的子类型 - >'颤振API问题
- go - 如何在golang中检查字符串是否包含大写字母?
- ios - 有谁知道这个 FIRMessaging 错误?
- opencv - 为什么当我使用 CPU 而不是 GPU 时 cv2.dnn 工作得更快?
- sql - 具有递归和更新内连接的 MariaDB SQL