所以我有这样的字段表,如果选中复选框,我希望能够编辑每个用户名/电子邮件等。
echo '<td><input type=checkbox name=checkbox[] value='. $row['Id'] .' ></td>';
echo '<td><input type=text name=username[] value='. $row['username'] .' ></td>';
echo '<td><input type=text name=email[] value='. $row['email'] .' ></td>';
echo '<td><input type=text name=adress[] value='. $row['adress'] .' ></td>';
&#13;
这是我的脚本,我从每个输入得到数组纯文本,顺便说一下我只使用查询电子邮件进行测试
if(isset($_POST['edit']))
{
if(isset($_POST['checkbox'])) {
$id_array = $_POST['checkbox'];
$id_count = count($_POST['checkbox']);
for($i=0; $i < $id_count; $i++) {
$id = $id_array[$i];
$query = ("UPDATE members SET email = '". $_POST['email'] ."' WHERE ID = '". $id ."'");
$result = $conn->query($query);
if($result) {
echo "ok";
}
else {
echo "<br><br>Error: " . $conn->error;
}
}
}
}
&#13;
答案 0 :(得分:2)
首先,您很容易受到sql injection attacks的攻击。享受你的服务器pwn3d。
其次,您将POST数组直接填充到查询中,这是不正确的。由于您在表单字段中使用[]
命名黑客,$_POST['email']
将成为您表单中值的ARRAY,并且您需要更多类似
.... VALUES ('$_POST[email][$i]', ...)
^^^^
(注意额外的数组索引)以访问该子数组中的各个值。
请记住,对于PHP,在字符串上下文中使用数组会为您提供文字Array
,而不是数组的内容:
$foo = array(1,2,3);
echo "$foo"; // outputs 'Array'
echo "$foo[1]"; // outputs '2'