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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-23 09:24:43788parcourir

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, ',');
}

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>

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();

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!

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