Maison > base de données > tutoriel mysql > Comment mettre à jour efficacement plusieurs enregistrements MySQL à l'aide d'un tableau d'entiers en PHP ?

Comment mettre à jour efficacement plusieurs enregistrements MySQL à l'aide d'un tableau d'entiers en PHP ?

Barbara Streisand
Libérer: 2024-12-09 10:50:06
original
1041 Les gens l'ont consulté

How to Efficiently Update Multiple MySQL Records Using an Integer Array in PHP?

Comment utiliser un tableau d'entiers dans des requêtes MySQL (PHP)

Problème :

Vous avez besoin d'un moyen d'utiliser un tableau d'ID d'éléments de contenu aléatoires dans une requête MySQL, chaque ID étant placé dans la clause WHERE dans l'ordre de son apparition dans le tableau. Cette requête doit être une MISE À JOUR pour chaque ID individuel du tableau.

Solution :

L'utilisation d'instructions préparées pour les opérations SQL dans PHP est fortement recommandée. Les instructions préparées offrent une sécurité accrue en empêchant les attaques par injection SQL et en améliorant l'efficacité grâce à la compilation des instructions de base de données. Deux approches que vous pouvez envisager sont :

Approche itérative :

$ids = array(2, 4, 6, 8);

$sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id = ?";
$stmt = $mysqli->prepare($sql);

for ($i = 0; $i < count($ids); $i++) {
    $stmt->bind_param("i", $ids[$i]);
    $stmt->execute();
    echo "Updated record ID: $id\n";
}

$stmt->close();
Copier après la connexion

Approche à exécution unique :

$ids = array(2, 4, 6, 8);

$params = implode(",", array_fill(0, count($ids), "?"));
$sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id IN ($params)";
$stmt = $mysqli->prepare($sql);

$types = str_repeat("i", count($ids)); // "iiii"
$args = array_merge(array($types), $ids); // ["iiii", 2, 4, 6, 8]
call_user_func_array(array($stmt, 'bind_param'), ref($args)); // $stmt->bind_param("iiii", 2, 4, 6, 8)

$stmt->execute();

$stmt->close();
echo "Updated record IDs: " . implode("," $ids) ."\n";
Copier après la connexion

Pour les champs supplémentaires que vous devez ajouter, ajoutez simplement plus d'espaces réservés de paramètres au SQL

Quelle approche choisir :

  • Approche itérative : Convient aux opérations UPDATE et INSERT où des appels de base de données sont effectués pour chacun record.
  • Approche à exécution unique : Efficace pour SELECT et Requêtes DELETE, ou pour les opérations UPDATE où tous les enregistrements sont modifiés de la même manière.

Avantages des instructions préparées :

  • Sécurité améliorée contre les attaques par injection SQL.
  • Amélioration de l'efficacité grâce à la compilation des relevés et à la réduction du transfert de données.
  • Prévention des transmissions répétitives de chaînes SQL complètes vers la base de données.

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