par
yann18 » 29 juil. 2013, 13:28
Une chose toute bête, vu que ce sont des entiers
foreach($_POST['id_supp'] as $id_suppr) {
mysql_query('DELETE FROM users WHERE id ="'. (int)$id_supp.'" ');
}
très bien vu, dans la mesure où l'on attends que des entiers il est tout à fait raisonnable de procéder à une vérification du type attendu.Du point de vue optimisation on y gagne parceque la fonction mysql_real_escape_string crée toujours une instance de connexion(si elle n'existe pas) à la bd.
En reprenant la proposition de @moogli celle de faire une seule requête en lieu et place de la boucle foreach, là aussi le code est mieux optimisé car les accès à la bd sont réduits.Un exemple d'une implémentation:
if(!empty($_POST['id_supp'])){
$idTab = array_map('intval', $_POST['id_supp']);
$id= '('. implode(',', $idTab) .')';
mysql_query('DELETE FROM users WHERE id IN "'.$id.' " ');
}
On pouvait aussi utiliser un filtre de validation des entiers (filter_var_array) pour s'assurer qu'on ne récupère au final que des entiers
[quote="imikado"]Une chose toute bête, vu que ce sont des entiers :)
[php]foreach($_POST['id_supp'] as $id_suppr) {
mysql_query('DELETE FROM users WHERE id ="'. (int)$id_supp.'" ');
}[/php][/quote]
très bien vu, dans la mesure où l'on attends que des entiers il est tout à fait raisonnable de procéder à une vérification du type attendu.Du point de vue optimisation on y gagne parceque la fonction mysql_real_escape_string crée toujours une instance de connexion(si elle n'existe pas) à la bd.
En reprenant la proposition de @moogli celle de faire une seule requête en lieu et place de la boucle foreach, là aussi le code est mieux optimisé car les accès à la bd sont réduits.Un exemple d'une implémentation:
[php]
if(!empty($_POST['id_supp'])){
$idTab = array_map('intval', $_POST['id_supp']);
$id= '('. implode(',', $idTab) .')';
mysql_query('DELETE FROM users WHERE id IN "'.$id.' " ');
}
[/php]
On pouvait aussi utiliser un filtre de validation des entiers (filter_var_array) pour s'assurer qu'on ne récupère au final que des entiers