Utilisation d'un tableau d'identifiants dans les requêtes MySQL avec PHP
Lorsqu'il s'agit de tableaux d'identifiants entiers en PHP, il devient nécessaire de les incorporer dans les requêtes MySQL. Cet article explique comment y parvenir efficacement.
Approche des déclarations préparées
Une approche recommandée consiste à utiliser des déclarations préparées pour une sécurité et une efficacité accrues. Voici un exemple :
$ids = array(2, 4, 6, 8); // Prepare the SQL statement with a single parameter placeholder $sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id = ?"; $stmt = $mysqli->prepare($sql); // Bind a different value to the placeholder for each execution for ($i = 0; $i < count($ids); $i++) { $stmt->bind_param("i", $ids[$i]); $stmt->execute(); echo "Updated record ID: $id\n"; }
Instruction dynamique avec plusieurs espaces réservés
Alternativement, une instruction SQL dynamique avec plusieurs espaces réservés peut être construite :
$ids = array(2, 4, 6, 8); // Prepare the SQL statement with multiple parameter placeholders $params = implode(",", array_fill(0, count($ids), "?")); $sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id IN ($params)"; $stmt = $mysqli->prepare($sql); // Bind all parameter values at once using dynamic function call $types = str_repeat("i", count($ids)); $args = array_merge(array($types), $ids); call_user_func_array(array($stmt, 'bind_param'), ref($args)); // Execute the query for all input values in one step $stmt->execute();
Quelle approche pour Choisir ?
Avantages des instructions préparées
Au-delà d'une sécurité améliorée contre les injections SQL, les instructions préparées offrent plusieurs avantages :
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!