解析数组时出现问题。
这里是$ _GET变量的转储
Array
(
[perm0] => Array
(
[0] => View
[1] => Add
[2] => Edit
[3] => Delete
[4] => Export
)
[perm1] => Array
(
[0] => View
[1] => Add
[2] => Export
)
[add] =>
)
当我尝试使用foreach插入db时,它仅插入第一项。 我需要根据perm []值(例如perm0,perm1等)添加数字
这是我的代码
$i = 0;
$id = 0;
foreach($_GET['perm'.$i] as $permission)
{
do {
$perms = implode(":",$_GET['perm'.$i]);
mysqli_query($dbc,"INSERT INTO `permissions` (`mid`,`uid`,`permissions`) VALUES ('$id','99','$perms')");
echo mysqli_error($dbc);
} while(strpos($permission, $i) !== false);
$id++;
$i++;
}
我原以为这会很简单,所以我不知道为什么会遇到问题
答案 0 :(得分:0)
问题是您总是只看第一项,您的陈述...
foreach($_GET['perm'.$i] as $permission)
即使您在循环中增加perm0
,也只会拿起$i
项目。
相反,此代码循环所有$_GET
值,检查它们是否为permN
值,然后插入该值。我还转换为准备好的语句,以增加一定程度的安全性...
$i = 0;
$insert = mysqli_prepare ($dbc,"INSERT INTO
`permissions` (`mid`,`uid`,`permissions`)
VALUES (?,'99',?)");
foreach ( $_GET as $key => $param ) {
if ( $key == "perm$i" ) {
$perms = implode(":",$param);
mysqli_stmt_bind_param ($insert, "is", $i, $perms);
mysqli_execute($insert);
$i++;
}
}
由于我很难对此进行测试,如果您有任何问题,请告诉我。