syntaxe sécurisée en pdo

Eléphanteau du PHP | 30 Messages

19 janv. 2011, 12:56

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

ViPHP
ViPHP | 5462 Messages

19 janv. 2011, 13:15

ta pas besion de or die puisque t'es en exception il faut faire un try...catch

Eléphanteau du PHP | 30 Messages

19 janv. 2011, 13:18

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

ViPHP
xTG
ViPHP | 7331 Messages

19 janv. 2011, 14:25

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.

Eléphanteau du PHP | 30 Messages

19 janv. 2011, 14:44

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))
{
?>

ViPHP
ViPHP | 5462 Messages

19 janv. 2011, 15:12

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