Ich speicherte die Daten in einem angeblich ein Array, aber was passiert ist, dass nur das letzte Kontrollkästchen aktiviert ist das einzige, das in den IDSkills registriert ist. Dies ist der Teil des Codes, wobei die Fähigkeiten durch eine Abfrage in der Datenbank angezeigt werdenPHP- ist nicht in der Lage, das andere Kontrollkästchen checked
<?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++;
}
?>
Hier ist der Teil, wo die Schleife alle ausgewählten Checkbox enthüllen
//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' und Sie werden Ihre Fehler sehen. es könnte "Array [0] ..." sagen. Wenn Sie in Ihrer Abfrage einen GET-Parameter verwenden, geben Sie Benutzern Zugriff auf Ihre gesamte Datenbank. Du musst den Werten entkommen. Siehe SQL Injection – Ibu
Was gibt 'var_dump ($ idSkills);' zurück, wenn mehrere Kontrollkästchen ausgewählt werden? @IBU OP sollte vorbereitete Anweisungen verwenden, nicht imho entkommen – DarkBee
Warum nicht einfach eine 'foreach' Schleife anstelle von' for' verwenden? – Barmar