从$ _POST数组中多次INSERT INTO MySQL

时间:2015-09-14 07:49:58

标签: php mysql arrays post insert

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

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)";
根据选中的复选框,第一个数组每次都会不同。

2 个答案:

答案 0 :(得分: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";

}

答案 1 :(得分:2)

那么你可以尝试在该阵列上使用foreach进行循环。因此,假设您已将复选框命名为name =" checkbox []"。

然后在您正在处理$ _POST变量的页面中,您可以

foreach($_POST[checkbox] as $box){
  //process each checkbox here
  $sql="Insert into <table>(<column1>,<column2>) Values (?,?)"
  $stmt = $mysqli->prepare(sql);
  $stmt->bind_param('<data dtype>', box); 
  $stmt->bind_param('<data dtype>', other value);   // bind $box value to the parameter
  $stmt->execute();
}

这只是一个让你入门的伪代码。 我希望你能得到一般的想法并继续推进你的项目:)

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