par
Victor BRITO » 04 janv. 2008, 18:33
Un autre avantage d'une requête préparée (et donc de la méthode prepare ()), en plus de l'échappement automatique des caractères spéciaux sensibles (les ', ", \ et autres --), est que la requête préparée peut être réutilisée autant de fois qu'on veut (pour une nouvelle insertion, mise à jour ou suppression de même nature) sans qu'on ait à la réécrire.
$pdo = new PDO ('mysql:host=localhost;dbname=base', 'root', '');
$sql = "INSERT INTO table (colonne1, colonne2) VALUES (:colonne1, :colonne2)";
$requete = $pdo -> prepare ($sql);
$colonne1 = 'Rasmus';
$colonne2 = 'Lerdorf';
$requete -> bindParam (':colonne1', $colonne1);
$requete -> bindParam (':colonne2', $colonne2);
$requete -> execute ();
// Nouvelle insertion
$colonne1 = 'Andi';
$colonne2 = 'Gutmans';
$requete -> execute ();
// Nouvelle insertion
$colonne1 = 'Zeev';
$colonne2 = 'Suraski';
$requete -> execute ();
On peut aussi passer les paramètres au moyen d'un tableau, comme suit :
$pdo = new PDO ('mysql:host=localhost;dbname=base', 'root', '');
$sql = "INSERT INTO table (colonne1, colonne2) VALUES (:colonne1, :colonne2)";
$requete = $pdo -> prepare ($sql);
$colonne1 = 'Rasmus';
$colonne2 = 'Lerdorf';
$requete -> execute (array (
':colonne1' => $colonne1,
':colonne2' => $colonne2
));
Un autre avantage d'une requête préparée (et donc de la méthode prepare ()), en plus de l'échappement automatique des caractères spéciaux sensibles (les ', ", \ et autres --), est que la requête préparée peut être réutilisée autant de fois qu'on veut (pour une nouvelle insertion, mise à jour ou suppression de même nature) sans qu'on ait à la réécrire.
[php]$pdo = new PDO ('mysql:host=localhost;dbname=base', 'root', '');
$sql = "INSERT INTO table (colonne1, colonne2) VALUES (:colonne1, :colonne2)";
$requete = $pdo -> prepare ($sql);
$colonne1 = 'Rasmus';
$colonne2 = 'Lerdorf';
$requete -> bindParam (':colonne1', $colonne1);
$requete -> bindParam (':colonne2', $colonne2);
$requete -> execute ();
// Nouvelle insertion
$colonne1 = 'Andi';
$colonne2 = 'Gutmans';
$requete -> execute ();
// Nouvelle insertion
$colonne1 = 'Zeev';
$colonne2 = 'Suraski';
$requete -> execute ();
[/php]
On peut aussi passer les paramètres au moyen d'un tableau, comme suit :
[php]$pdo = new PDO ('mysql:host=localhost;dbname=base', 'root', '');
$sql = "INSERT INTO table (colonne1, colonne2) VALUES (:colonne1, :colonne2)";
$requete = $pdo -> prepare ($sql);
$colonne1 = 'Rasmus';
$colonne2 = 'Lerdorf';
$requete -> execute (array (
':colonne1' => $colonne1,
':colonne2' => $colonne2
));[/php]