Comment puis-je améliorer ma fonction d'insertion/mise à jour MySQL à l'aide des instructions préparées par PDO ?

Mary-Kate Olsen
Libérer: 2024-11-23 09:24:43
original
787 Les gens l'ont consulté

How Can I Improve My MySQL Insert/Update Function Using PDO Prepared Statements?

Fonction d'assistance d'insertion/mise à jour à l'aide de PDO

Instructions préparées par PDO pour l'insertion de données

La fonction d'assistance fournie, dbSet, génère une instruction SET à utiliser avec les pilotes MySQL traditionnels mais ne prend pas en charge les instructions préparées par PDO. Pour résoudre ce problème, une version modifiée de la fonction peut être utilisée, tirant parti des avantages de PDO.

Fonction d'assistance modifiée

La fonction dbSet mise à jour prend désormais un tableau de noms de champs et une référence à un tableau de valeurs correspondantes. Il construit une instruction SET avec des espaces réservés pour chaque champ et ajoute les valeurs au tableau de valeurs.

function dbSet($fields, &$values) {
    $set = '';
    $values = array();

    foreach ($fields as $field) {
        if (isset($_POST[$field])) {
            $set .= "`$field` = ?,";
            $values[] = $_POST[$field];
        }
    }

    return rtrim($set, ',');
}
Copier après la connexion

Exemple d'utilisation :

$fields = explode(" ","name surname lastname address zip fax phone date");
$_POST['date'] = $_POST['y']."-".$_POST['m']."-"$_POST['d'];

$query  = "UPDATE $table SET ".dbSet($fields, $values).", stamp=NOW() WHERE>
Copier après la connexion

Avantages d'AOP Préparé Déclarations :

  • Sécurité : Empêche l'injection SQL en utilisant des espaces réservés.
  • Efficacité : Prépare la requête une fois, réduit la base de données surcharge.
  • Cohérence : Garantit la cohérence des données formatage et conversion de type.

Solution alternative : mappage objet-relationnel (ORM)

Envisagez d'utiliser un ORM tel que Doctrine ORM, qui simplifie le remplissage des données et élimine le besoin de création manuelle de requêtes.

$table = new Table();
$table->fromArray($_POST);
$table->save();
Copier après la connexion

Cette approche automatise le processus de mappage des propriétés aux champs de base de données en fonction de classes d'entités définies.

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