Maison  >  Article  >  développement back-end  >  Comment insérer plusieurs tableaux de cases à cocher et de zones de texte dans une base de données MySQL en PHP ?

Comment insérer plusieurs tableaux de cases à cocher et de zones de texte dans une base de données MySQL en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-27 20:37:30381parcourir

How to Insert Multiple Checkbox and Textbox Arrays into a MySQL Database in PHP?

Insertion de plusieurs tableaux de cases à cocher et de zones de texte dans la base de données MySQL en PHP

Insertion de plusieurs tableaux de cases à cocher

Si les valeurs des cases à cocher ne sont pas une fois inséré dans la base de données, il pourrait y avoir une différence entre les index de l'attribut name dans notre HTML et les éléments du tableau PHP. Pour résoudre ce problème, nous devons définir explicitement des index uniques pour chaque élément de case à cocher :

<code class="html"><input tabindex="1" name="checkbox[0]" type="checkbox" value="17" />

<input tabindex="1" name="checkbox[1]" type="checkbox" value="20" /></code>

Cela garantira que chaque case à cocher a son propre index unique dans le tableau $_POST['checkbox'].

Empêcher l'insertion de cases à cocher non cochées

Pour empêcher l'insertion de cases à cocher non cochées dans la base de données, nous devons explicitement vérifier si chaque case à cocher a été cochée avant d'insérer sa valeur :

<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>

Utilisation de la méthode d'instruction préparée pour les requêtes d'insertion

Au lieu d'utiliser mysql_query, il est recommandé d'utiliser des instructions préparées pour les requêtes d'insertion afin d'éviter les attaques par injection SQL. Voici comment modifier votre méthode d'insertion :

<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>

Autres considérations

  • Il est recommandé de récupérer les prix de la base de données au lieu de les coder en dur dans le HTML pour empêcher toute falsification.
  • Évitez de mélanger les API MySQLi et mysql pour la connexion à la base de données et l'exécution des requêtes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn