当我有一个来自复选框的数组时,MySQL foreach INSERT。

时间:2011-11-09 14:20:52

标签: php mysql insert

我有一个要插入数据库的复选框列表,我已将其作为数组处理:

<input name="my_array[]" value="<?php echo $data['ID'] ?>" type="checkbox">
<?php echo $data['name'] ?><?php echo "br/>";

我从我的数据库中获取了我的复选框列表,所选复选框的发布方式如下:

   $strFoo=$_POST['my_array'];

    $strBar = "";


    foreach ($strFoo as $strFooName) {

    $strBar .= $strFooName . ", ";
    }
    $strBar = substr($strBar, 0, -2);

回应,我得到了我所选择的ID列表1, 2, 3, 4

遗憾的是,我的下面的foreach只插入了数组的第一个ID ..

foreach ($strFoo as $strFooName) {

        $strSql="INSERT INTO table (ID) 
                 VALUES ('$strBar')";
    }

如何将每个ID插入表格?

4 个答案:

答案 0 :(得分:1)

必须是:

INSERT INTO table (ID) VALUES (1), (2), (3), (4)

所以你的处理步骤需要

$values = array();
foreach ($strFoo as $strFooName) {
     $values[] = '(' . intval($strFooName) . ')';
}

$strBar = implode(',', $values);

注意添加intval - 确保只将有效数字插入到SQL语句中。您的版本容易受到SQL injection攻击。

答案 1 :(得分:0)

$strSql="INSERT INTO table (ID) VALUES ('$strBar')";

应该是

$strSql="INSERT INTO table (ID) VALUES ('$strFooName')";

答案 2 :(得分:0)

您已使用$strFooName在数组中循环,但您正在插入仅在上面更新一次的$strBar。也许是问题

答案 3 :(得分:0)

来自12.2.5. INSERT Syntax

  

使用VALUES语法的INSERT语句可以插入多行。至   执行此操作,包括多个列值列表,每个列值都包含在其中   括号并用逗号分隔。例如:

     

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

然而,那就是说。看起来你正试图用这段代码直接遍历你的帖子数组

foreach ($strFoo as $strFooName) {
        $strSql="INSERT INTO table (ID) VALUES ('$strBar')";
}
尚未创建该示例中的

$strBar。你可以试试

foreach ($strFoo as $strFooName) {
        $strSql="INSERT INTO table (ID) VALUES ('$strFooName')";
}

虽然如果你打算这样做,你也应该考虑阻止SQL注入。