我有一个要插入数据库的复选框列表,我已将其作为数组处理:
<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插入表格?
答案 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)
然而,那就是说。看起来你正试图用这段代码直接遍历你的帖子数组使用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注入。