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

Susan Sarandon
Libérer: 2024-10-27 20:37:30
original
380 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!