Einfügen mehrerer Kontrollkästchen-Arrays
Wenn Kontrollkästchenwerte nicht vorhanden sind Beim Einfügen in die Datenbank kann es zu einer Diskrepanz zwischen den Indizes des Namensattributs in unserem HTML und den PHP-Array-Elementen kommen. Um dieses Problem zu lösen, müssen wir explizit eindeutige Indizes für jedes Kontrollkästchenelement festlegen:
<code class="html"><input tabindex="1" name="checkbox[0]" type="checkbox" value="17" /> <input tabindex="1" name="checkbox[1]" type="checkbox" value="20" /></code>
Dadurch wird sichergestellt, dass jedes Kontrollkästchen seinen eigenen eindeutigen Index im Array $_POST['checkbox'] hat.
Verhindern, dass nicht aktivierte Kontrollkästchen eingefügt werden
Um zu verhindern, dass nicht aktivierte Kontrollkästchen in die Datenbank eingefügt werden, sollten wir explizit prüfen, ob jedes Kontrollkästchen aktiviert wurde, bevor sein Wert eingefügt wird:
<code class="php">if(isset($_POST['checkbox'])) { foreach($_POST['checkbox'] as $check) { if(!empty($check)) { $check = implode(',', $_POST['checkbox']); $name = implode(',', $_POST['item']); $quantity = implode(',', $_POST['quantity']); } }</code>
Verwenden der Methode „Prepared Statement“ für Einfügeabfragen
Anstelle der Verwendung von mysql_query wird empfohlen, vorbereitete Anweisungen für Einfügeabfragen zu verwenden, um SQL-Injection-Angriffe zu verhindern. So können Sie Ihre Einfügemethode ändern:
<code class="php">$stmt = $conn->prepare("INSERT INTO purchases (Product, Quantity, Price) VALUES (?, ?, ?)"); $stmt->bind_param("sis", $name, $quantity, $price); foreach ($_POST['checkbox'] as $i => $price) { $name = $_POST['name'][$i]; $quantity = $_POST['quantity'][$i]; $stmt->execute(); }</code>
Weitere Überlegungen
Das obige ist der detaillierte Inhalt vonWie füge ich mehrere Checkbox- und Textbox-Arrays in eine MySQL-Datenbank in PHP ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!