私は配列であると想定されるデータを格納しましたが、最後にチェックされたチェックボックスだけがidSkillsに登録されています。これは、スキルは、ここでデータベースPHPは他のチェックされたチェックボックスを読み取ることができません
<?php
$i=0;
while ($row = mysqli_fetch_assoc($result)) {
$id=$row['id'];
$skillName=$row['skillName'];
?>
<input type="checkbox" name="skills[]" value="<?php echo $id; ?>"><?php echo $skillName; ?><br>
<?php
$i++;
}
?>
にクエリを介して表示されたコードの一部は、ループはそれが最善だろう選択チェックボックス
//QUERY TO INSERT
$conn = new mysqli($config['servername'], $config['username'], $config['password'], $config['database']);
$idSkills = $_GET['skills'];
if(empty($idSkills))
{
echo("You didn't select any buildings.");
}
else
{
$N = count($idSkills);
echo("You selected $N door(s): ");
echo("$idSkills[1] ");
for($i=0; $i < $N; $i++) {
echo "Skill ID: "
$sql = "INSERT INTO volunteer_skills (idskill,idVolunteer)
VALUES ('$idSkills[$i]','$idVolunteer')";
$result = $conn->query($sql);
}
}
$conn->close();
echo '$ sql'と表示され、エラーが表示されます。 "Array [0] ..."と言うかもしれません。また、クエリ内でGETパラメータを使用すると、ユーザはデータベース全体にアクセスできます。あなたは値をエスケープする必要があります。 SQL注入を参照してください – Ibu
複数のチェックボックスを選択すると 'var_dump($ idSkills); @ibu OPはimhoをエスケープしないで、準備された文を使うべきです – DarkBee
'for'の代わりに' foreach'ループを使うのはどうですか? – Barmar