Page 1 sur 1

syntaxe sécurisée en pdo

Posté : 19 janv. 2011, 12:56
par doud18
Bonjour, je suis débutant en php, et je voulais savoir si ces deux façon d'écrire le code est une bonne façon sécurisée :

<?php 
try 
{
   $AUR = new PDO('mysql:host='.$serveur.';port='.$port.';dbname='.$bdd, $user, $passwd);
	$AUR->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Obligatoire pour la suite
}


catch (PDOException $e) 
{	
 $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
    die($msg);

?>
}


et ensuiste dans mes autres pages quand je fait une requêt voila comment je fait :
<?php
$res=$AUR->query("SELECT * FROM ".DB_TABLE_PARAMETRE."") or die('Erreur : '.$e->getMessage());
foreach ($res as $donnees)
{
?>


Est ce qu'il y a besoin de remettre a la fin de chaque requete :
or die('Erreur : '.$e->getMessage());
Merci

Re: syntaxe sécurisée en pdo

Posté : 19 janv. 2011, 13:15
par stealth35
ta pas besion de or die puisque t'es en exception il faut faire un try...catch

Re: syntaxe sécurisée en pdo

Posté : 19 janv. 2011, 13:18
par doud18
Merci.

Est ce que tu peux m'expliquer la différence entre des requêtes préparés et des requêtes comme j'ai fait plus et qui fonctionne

Re: syntaxe sécurisée en pdo

Posté : 19 janv. 2011, 14:25
par xTG
La requête préparée sert à mettre en mémoire un traitement qui est souvent long et surtout répétitif.
Cela ferra gagner de la mémoire et du temps de calcul lors du prochain appel car la requête aura déjà été interprétée.

Re: syntaxe sécurisée en pdo

Posté : 19 janv. 2011, 14:44
par doud18
donc c'est mieux de faire ça :
<?php
$sql="select * FROM ".DB_TABLE_MEMBRE." WHERE id'";
$qid=$AUR->prepare($sql);
$qid->execute();
$row=$qid->fetch(PDO::FETCH_OBJ);
?>
que ça :
<?php
$sql=$AUR->query("select * FROM ".DB_TABLE_MEMBRE." WHERE id'");
while($row=$sql->fetch(PDO::FETCH_OBJ))
{
?>

Re: syntaxe sécurisée en pdo

Posté : 19 janv. 2011, 15:12
par stealth35
la 2eme puisque les requêtes préparées servent uniquement pour passer des paramètres, la y'en a pas donc pas besion, et un table n'est pas considéré comme un paramètre.
http://dev.mysql.com/doc/refman/5.0/fr/sqlps.html