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

Patricia Arquette
Freigeben: 2024-10-30 11:10:12
Original
1007 Leute haben es durchsucht

  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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$name = $_POST['name'][$i];
$quantity = $_POST['quantity'][$i];
$stmt->execute();
Nach dem Login kopieren
}


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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!