mysql insert inside foreach 不起作用?

mysql insert inside foreach is not working?

我想弄清楚为什么 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

有人可以就此问题提出建议吗?

如有任何帮助,我们将不胜感激。

更改循环以便每次都执行查询:

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. Learn about prepared statements

您需要在循环内执行查询才能多次插入。

<?php
foreach($comma_separated as $seperate) {
    $sql = "INSERT INTO groups(`g_name`, `numbers`) VALUES ('$g_name','$seperate')";

    $query = mysqli_query($db_conx, $sql);
}
?>

您还应该考虑使用准备好的语句。

您可以使用此语法通过一次查询插入多条记录,而不是尝试执行多个查询。

$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);

来自MySQL documentation

INSERT statements that use VALUES syntax can insert multiple rows. To do this, include multiple lists of column values, each enclosed within parentheses and separated by commas.

Example: INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);