Lequel de ces codes est le plus optimisé ?
Hors ligneGlougloute Le 13/08/2007 à 14:27 Profil de Glougloute Configuration de Glougloute

I love VIC
Bonjour,
En codant, je me suis posé une question. Quelle requete est la plus rapide, la plus efficace ?


Requete #1


$q = mysql_query('SELECT page FROM page WHERE page="'.$_GET['q'].'"');
$r = mysql_fetch_row($q);
if(empty($r[0])){
//on redirige sur l'accueil
header ('location: /');
} else {
//on continue
}



Requete #2


$q = mysql_query('SELECT page FROM page WHERE page="'.$_GET['q'].'"');
if(mysql_fetch_array($q)===FALSE){;
//on redirige sur l'accueil
header ('location: /');
} else {
//on continue
}


Merci.


Edit : Je viens de m'apercevoir que mon titre n'est pas en français :( Je pense que ça serait bien si on pouvait modifier le titre de nos posts. Merci.
--
Je vous aiderai dans la mesure du possible ;)
Hors ligneCarroteman Le 13/08/2007 à 15:08 Profil de Carroteman Configuration de Carroteman

j'aurais tendance
a dire que la première est la plus optimisé car tu as utilisé mysql_fetch_row() au lieu de mysql_fetch_array() .
(d'ailleurs je ne suis pas sur que les 2 conditions ne sont pas les mêmes mais je doit me tromper...)

Attend l'avis de Anthony, il saura bien te répondre
Hors ligneGlougloute Le 13/08/2007 à 16:44 Profil de Glougloute Configuration de Glougloute

I love VIC
Merci pour ta réponse.
Je voulais surtout insister au niveau du if(mysql_fetch_array($q)===FALSE){;  que du mysql_fetch_row (qui est mieux que mysql_fetch_array dans mon cas).
--
Je vous aiderai dans la mesure du possible ;)
Hors ligneCarroteman Le 13/08/2007 à 17:45 Profil de Carroteman Configuration de Carroteman

ben justement je disait plus haut que je croit que les 2 conditions (dans tes 2 scripts) ne me paraissent pas les mêmes :

mysql_fetch_array($q)===FALSE
Là tu vérifie s'il n'y a aucun résultat.

$r = mysql_fetch_row($q);
if(empty($r[0])){ 

Et là tu vérifie si le tableau ne contient rien (mais il existe)

mais bon je débute en php donc je peut me trompé
Hors ligneAnthony Le 13/08/2007 à 17:53 Profil de Anthony Configuration de Anthony

Admin
Salut,

J'aurais plutôt fait ça :

$q = mysql_query('SELECT page FROM page WHERE page="'.$_GET['q'].'"');
if(mysql_num_rows($q) === 0){
//on redirige sur l'accueil
header ('location: /');
} else {
//on continue
}

et attention au $_GET['q'] (vive les failles de SQL injection).
--

Hors ligneGlougloute Le 13/08/2007 à 18:18 Profil de Glougloute Configuration de Glougloute

I love VIC
Merci pour vos réponses.

Ce n'est pas une faille puisque je vérifie auparavant si $_GET['q'] existe :)
--
Je vous aiderai dans la mesure du possible ;)
Hors ligneCarroteman Le 13/08/2007 à 18:24 Profil de Carroteman Configuration de Carroteman

Glougloute a écrit :
Merci pour vos réponses.

Ce n'est pas une faille puisque je vérifie auparavant si $_GET['q'] existe :)


Ce n'était pas de sa qu'il pensait je croit, il faisait allusion aux pirates car une variable passé en méthode GET est accessible et modifiable par tout le monde, et vu qu'elle intervient dans une reqête SQL il faut faire gaffe à son contenu
Hors ligneAnthony Le 13/08/2007 à 18:25 Profil de Anthony Configuration de Anthony

Admin
Tu vérifies si $_GET existe mais le problème est que si je mets ' OR 1=1 en $_GET t'es en général sauvé par les magic quotes mais c'est pas toujours le cas et il y a une faille ;)
--

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels