Heim >Backend-Entwicklung >PHP-Tutorial >So fügen Sie mehrere Kontrollkästchen- und Textfeld-Arrays in eine MySQL-Datenbank ein: Beheben häufiger Probleme

So fügen Sie mehrere Kontrollkästchen- und Textfeld-Arrays in eine MySQL-Datenbank ein: Beheben häufiger Probleme

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 11:10:121051Durchsuche

  How to Insert Multiple Checkbox and Textbox Arrays into a MySQL Database: Addressing Common Issues

Einfügen mehrerer Kontrollkästchen- und Textfeld-Arrays in die MySQL-Datenbank: Beheben häufiger Probleme

Abfragen mit mehreren Kontrollkästchen- und Textfeld-Arrays können in PHP eine Herausforderung darstellen. Dieser Artikel befasst sich mit zwei spezifischen Problemen: Warum Kontrollkästchen als aktiviert angezeigt werden, auch wenn dies nicht der Fall ist, und warum Daten nicht in die Datenbank eingefügt werden können.

Problem bei der Anzeige von Kontrollkästchen

Der Übeltäter ist die Verwendung von implode, das eine durch Kommas getrennte Zeichenfolge aller Kontrollkästchenwerte generiert. Bei diesem Ansatz wird fälschlicherweise die gesamte Liste in jede Datenbankzeile eingefügt, unabhängig davon, ob ein bestimmtes Kontrollkästchen aktiviert ist oder nicht.

Um dies zu beheben, weisen Sie den Kontrollkästchennamen im HTML des Formulars explizite Indizes zu. Auf diese Weise können die entsprechenden Kontrollkästchenwerte im Array $_POST['checkbox'] einfach mit den zugehörigen Elementen $_POST['item'] und $_POST['quantity'] verknüpft werden, ohne auf implode.

Datenbankeinfügungsfehler

Ein weiteres Problem entsteht dadurch, dass Kontrollkästchen nur Werte für aktivierte Elemente übermitteln. Dies führt zu einer Nichtübereinstimmung zwischen den Indizes des Arrays $_POST['checkbox'] und den entsprechenden Elementen $_POST['item'] und $_POST['quantity'].

Um dieses Problem zu beheben, verwenden Sie die Indizes, die den Kontrollkästchennamen in der geänderten Form zugewiesen sind. Dies ermöglicht die richtige Wertepaarung und stellt sicher, dass jede Zeile in der Datenbank den richtigen Datensatz enthält.

Anstatt mysql_query zu verwenden, verwenden Sie außerdem die Methode $conn->query() konsistent mit der MySQLi-API, die für die Datenbankverbindung verwendet wird.

Aktualisierter PHP-Code:

<p>$stmt = $conn->prepare(" INSERT INTO Purchases (Product, Quantity, Price) VALUES (?, ?, ?)");<br>$stmt->bind_param("sis", $name, $quantity, $price);<br>foreach ( $_POST['checkbox'] as $i => $price) {<br></p>
<pre class="brush:php;toolbar:false">$name = $_POST['name'][$i];
$quantity = $_POST['quantity'][$i];
$stmt->execute();
}


Zusätzliche Sicherheitsmaßnahme

Aus Sicherheitsgründen empfiehlt es sich generell, Preise aus der Datenbank abzurufen, anstatt sie im HTML zu speichern. Dadurch wird verhindert, dass Benutzer die Preise im Web-Inspektor ändern, bevor sie das Formular absenden.

Das obige ist der detaillierte Inhalt vonSo fügen Sie mehrere Kontrollkästchen- und Textfeld-Arrays in eine MySQL-Datenbank ein: Beheben häufiger Probleme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn