Exécution de requêtes avec un tableau PHP dans MySQL
Lorsque vous disposez d'un tableau d'éléments que vous devez incorporer dans une requête MySQL, vous pouvez je me demande comment le gérer efficacement. En PHP, il existe plusieurs approches pour y parvenir :
Utilisation d'instructions préparées
Les instructions préparées sont un moyen sécurisé et efficace d'exécuter des requêtes avec des valeurs de paramètres dynamiques. Pour utiliser des instructions préparées avec un tableau d'ID :
$ids = [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 alternative pour les espaces réservés à plusieurs paramètres
Si vous devez mettre à jour plusieurs champs avec les mêmes données pour chacun ID dans le tableau, vous pouvez utiliser une seule requête avec plusieurs espaces réservés de paramètres :
$ids = [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); // Dynamic call for parameter binding $types = str_repeat("i", count($ids)); $args = array_merge(array($types), $ids); call_user_func_array(array($stmt, 'bind_param'), ref($args)); // Execute once for all input values $stmt->execute(); $stmt->close(); echo "Updated record IDs: " . implode(",", $ids) . "\n";
Choisir le bon Approche
L'approche itérative avec des instructions préparées convient aux opérations UPDATE et INSERT où vous devez mettre à jour plusieurs enregistrements un par un. L'approche à paramètres multiples est plus efficace pour les opérations SELECT et DELETE, ou lorsque vous devez mettre à jour plusieurs enregistrements avec les mêmes données.
Avantages des instructions préparées
N'oubliez pas d'utiliser des instructions préparées, même pour les petits tableaux, afin de garantir l'intégrité et les performances des 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!