Glougloute |
Le 13/08/2007 Ã 14:27 |
|
 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 ;) |
Carroteman |
Le 13/08/2007 Ã 15:08 |
|
|
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 |
Glougloute |
Le 13/08/2007 Ã 16:44 |
|
 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 ;) |
Carroteman |
Le 13/08/2007 Ã 17:45 |
|
|
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é |
Anthony |
Le 13/08/2007 Ã 17:53 |
|
 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). -- 
|
Glougloute |
Le 13/08/2007 Ã 18:18 |
|
 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 ;) |
Carroteman |
Le 13/08/2007 Ã 18:24 |
|
|
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 |
Anthony |
Le 13/08/2007 Ã 18:25 |
|
 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 ;) -- 
|