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
Barbara Streisandoriginal
2024-12-09 10:50:061033parcourir

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

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

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!

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