来自 $_POST 数组的多个 INSERT INTO MySQL

Posted

技术标签:

【中文标题】来自 $_POST 数组的多个 INSERT INTO MySQL【英文标题】:Multiple INSERT INTO MySQL from $_POST array 【发布时间】:2015-12-10 03:38:45 【问题描述】:

我从一个表单中收到以下数组:

array (size=1)
    'checkbox' => 
array (size=2)
    0 => string '14' (length=2)
    1 => string '13' (length=2)
    2 => string '15' (length=2)
array (size=1)
    'id' => string '1' (length=1)

我需要构建一个如下所示的查询:

$sql = "INSERT INTO table(column1,column2) VALUES (14,1),(13,1),(15,1)";
根据选中的复选框,第一个数组每次都会有所不同。

【问题讨论】:

【参考方案1】:

好吧,您可以尝试在该数组上使用 foreach 进行循环。因此,假设您已将复选框命名为 name="checkbox[]"

然后在您正在处理 $_POST 变量的页面上,您可以这样做

$sql = "INSERT INTO table(column1,column2) VALUES (?,?)";
$stmt = $mysqli->prepare($sql);
foreach ($_POST['checkbox'] as $box) 
    //process each checkbox here
    $stmt->bind_param('ss', $box, $otherValue);
    $stmt->execute();

这只是一个让您入门的伪代码。

您可以在此处找到有关准备好的语句的更多信息:http://php.net/manual/en/mysqli-stmt.bind-param.php

【讨论】:

【参考方案2】:
// Create an empty array to store each checkbox value
$values = array();

if(is_array($_POST['checkbox']))
    foreach($_POST['checkbox'] as $checkbox)
        foreach($checkbox as $key => $value)

            // add each checkbox value to an array
            $values[] = ($value,$_POST['id']);

        
    


// if the array has values..
if(count($values))

    // implode the values into a string..
    $sqlValues = implode(',',$values);

    // ..and use that string in the query
    $sql = "INSERT INTO table(column1,column2) VALUES $sqlValues";


【讨论】:

此代码已损坏。看起来您尝试在 PHP 中使用元组,而 PHP 没有元组。此外,这不是您使用准备好的语句的方式。如果你这样做,SQL 仍然会被破坏。

以上是关于来自 $_POST 数组的多个 INSERT INTO MySQL的主要内容,如果未能解决你的问题,请参考以下文章

如何从多个 $_POST 数组中插入 MYSQL 行

Swift--Array 详解

将 jQuery 数组传递给 PHP (POST)

来自 json api 的 Insert_batch

从多维数组中删除多个值

将多个值排列到变量中