我想弄清楚为什么foreach里面的这个MYSQL INSERT没有在mysql数据库中插入任何内容!
// Parse the form data and add inventory item to the system
if (isset($_POST['g_name'])) {
$g_name =$_POST['g_name'];
$numbers = $_POST['numbers'];
$comma_separated = explode(", ", $numbers);
foreach($comma_separated as $seperate){
$sql .="INSERT INTO groups(`g_name`, `numbers`) VALUES ('$g_name','$seperate')";
}
$query = mysqli_query($db_conx, $sql);
header("location: groups.php");
exit();
}
如果我将$sql .=
更改为$sql =
,它只会在MYSQL数据库中插入一个值。
$numbers
的值如下:1,2,3,4,5
有人可以就此问题提出建议吗?
任何帮助将不胜感激。
答案 0 :(得分:5)
更改循环,以便每次执行查询:
foreach($comma_separated as $seperate){
$sql ="INSERT INTO groups(`g_name`, `numbers`) VALUES ('$g_name','$seperate')";
$query = mysqli_query($db_conx, $sql);
}
您应该记住your script is at risk for SQL Injection Attacks.了解prepared statements。
答案 1 :(得分:4)
您可以使用此语法通过一个查询插入多个记录,而不是尝试执行多个查询。
$sql = "INSERT INTO groups(`g_name`, `numbers`) VALUES";
$comma = '';
foreach($comma_separated as $seperate){
$sql .="$comma ('$g_name','$seperate')";
$comma = ',';
}
$query = mysqli_query($db_conx, $sql);
使用VALUES语法的INSERT语句可以插入多行。为此,请包含多个列值列表,每个列值都括在括号内并用逗号分隔。
示例:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
答案 2 :(得分:1)
您需要在循环内执行查询,以便多次插入。
<?php
foreach($comma_separated as $seperate) {
$sql = "INSERT INTO groups(`g_name`, `numbers`) VALUES ('$g_name','$seperate')";
$query = mysqli_query($db_conx, $sql);
}
?>
您还应该考虑使用准备好的陈述。