Page 1 sur 1

conseil sur l'optimisation entre isset et @

Posté : 20 mars 2014, 20:04
par wwwbillgates
Bonjour, je souhaiterais avoir votre avis sur le fait de tester ou non toutes les variables avec isset() en sortie de requête sql en thermes d'optimisation. Car auparavent j'utilisai un @ pour cacher les erreur de variables susceptibles d'être vides et ca ne posait aucun problème. cependant, il est apparement déconseillé d'utiliser le @. Dois-je donc procéder de cette manière ? (ci-dessous) et cela va t'il rendre mon code plus lourd ?
Merci pour votre aide ;)

$articles_sql = $bdd->prepare("
						SELECT id, titre, url, boutique, prix, delai_realisation, prioritaire
						FROM cadeauxplaisir_test1
						WHERE url = :url
						");
$articles_sql->execute(array(
						'url' => $_GET['url']
						));
$articles_sql->setFetchMode(PDO::FETCH_ASSOC);
$articles = $articles_sql->fetch(PDO::FETCH_ASSOC);

if (isset($articles['id'])) { $articles_id = $articles['id']; }
if (isset($articles['titre'])) { $articles_titre = $articles['titre']; }
if (isset($articles['url'])) { $articles_url = $articles['url']; }
if (isset($articles['boutique'])) { $articles_boutique = $articles['boutique']; }
if (isset($articles['prix'])) { $articles_prix = $articles['prix']; }
if (isset($articles['delai_realisation'])) { $articles_delai_realisation = $articles['delai_realisation']; }
if (isset($articles['prioritaire'])) { $articles_prioritaire = $articles['prioritaire']; }

Re: conseil sur l'optimisation entre isset et @

Posté : 20 mars 2014, 22:53
par xTG
Utiliser @ est une aberration.
C'est cacher ce que l'on pense être un ruisseau avec une pierre.
Mais le jour où le ruisseau devient un fleuve, la pierre elle a été érodée par l'eau et n'en est devenu que plus petite encore...
Un grain de sable à l'échelle de la mer.

Ne jamais utiliser quelque chose qui n'existe pas. => isset

Sauf que dans ton cas son utilisation est abusive.
Tu ne devrais pas chercher à savoir si les index existent mais plutôt si ta requête retourne au moins un enregistrement.
Donc vérifier que $articles (le retour de fetch) n'est pas égal à false.

Re: conseil sur l'optimisation entre isset et @

Posté : 21 mars 2014, 19:15
par wwwbillgates
Merci pour ta réponse très précise. Cependant, pourrais tu juste me donner un petit exemple car malgré des recherches je ne sais pas comment tester si fetch est égal à false.
Merci beaucoup pour ton aide

Re: conseil sur l'optimisation entre isset et @

Posté : 21 mars 2014, 22:47
par xTG
C'est pourtant la base de tout langage que de savoir comparer deux éléments...
http://fr2.php.net/manual/en/language.o ... arison.php
http://fr2.php.net/manual/en/control-structures.if.php

Re: conseil sur l'optimisation entre isset et @

Posté : 22 mars 2014, 12:28
par sirakawa
Ajoutons que c'est avant la requete qu'il faut tester le validité des données envoyées et pas seulement par isset regarder la doc de filter-var
$valides = false;
if (isset($_POST['var'']))
{
$var = $mysqli->real_escape_string($_POST[''var']);
$valides = true;
}

if ($valides)
{
//on peut enregistrer
}
Sur les codes "corrects" que j'ai vus qui emploient @, il ya derrière tout un codage de traitement de l'erreur éventuelle.