3 回答
TA贡献1943条经验 获得超7个赞
您也可以借此机会纠正 SQL 注入漏洞。
$stmt = $conn->prepare('INSERT INTO draftPick (user_id, athlete_id) VALUES ('77', ? )');
$stmt->bind_param('i', $value);
foreach($checkboxes as $value) {
$stmt->execute();
}
TA贡献1836条经验 获得超13个赞
你所做的只是替换字符串,但你实际插入数据库的执行是在循环之后写入的,这就是为什么它只插入最后一个复选框。$sql
试试这个:
$checkboxes = isset($_POST['athlete']) ? $_POST['athlete'] : array();
foreach($checkboxes as $value) {
$sql = "INSERT INTO draftPick(user_id, athlete_id)VALUES('77', '$value' )";
if(mysqli_query($conn,$sql)) {
echo 'Data added sucessfully';
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
}
mysqli_close($conn);
另外,请注意,您插入(循环)的方式非常慢,因为它正在执行相当多的查询。应改用批量插入。
警告:正如达尔曼在评论中提到的
您对 SQL 注入持开放态度,应使用参数化的预准备语句,而不是手动构建查询。它们由美通或麦氏清科提供。永远不要相信任何类型的输入!即使您的查询仅由受信任的用户执行,您仍然面临损坏数据的风险。逃避是不够的!
TA贡献1875条经验 获得超5个赞
当您设置 :
$sql = "INSERT INTO draftPick(user_id, athlete_id)VALUES('77', '$value' )";
它只是一个字符串 bieng 设置为$sql可瓦拉,其中
mysqli_query($conn,$sql)
是执行 SQL 查询以将数据插入到表中,因此移动
foreach($checkboxes as $value) {
$sql = "INSERT INTO draftPick(user_id, athlete_id)VALUES('77', '$value' )";
mysqli_query($conn,$sql);
}
- 3 回答
- 0 关注
- 134 浏览
添加回答
举报