PDO::prepare -- Pregăteşte o instrucţiune pentru execuţie şi întoarce un obiect al instrucţiunii
Descriere
PDOStatement PDO::prepare ( string statement [, array driver_options] )
Pregăteşte o instrucţiuni SQL în vederea executării acesteia de metoda PDOStatement::execute(). Instrucţiunea SQL poate conţine zero sau mai mulţi parametri - marcaje de tip nume (:name) sau (?) care vor fi înlocuiţi cu valori reale în momentul execuţiei instrucţiunii. Nu se pot folosi ambele tipuri de parametri în aceeaşi instrucţiune SQL.
Se include câte un parametru unic pentru fiecare valoare care va fi trecută în instrucţiune la apelarea PDOStatement::execute(). În instrucţiunea pregătită nu se pot folosi de mai multe ori parametri cu acelaşi nume. Nu pot fi legate mai multe valori la un singur parametru, de exemplu, clauza IN() a unei instrucţiuni SQL.
Apelarea PDO::prepare() şi PDOStatement::execute() pentru instrucţiuni care vor fi lansate de mai multe ori cu valori diferite ale parametrilor optimizează performanţa aplicaţiei pentru că permite ca driverul să negocieze cu partea de client şi / sau de server stocând informaţia în cache şi evită atacul injecţiilor SQL prin eliminarea citării manuale a parametrilor.
PDO emulează instrucţiunile pregătite /parametrii legaţi pentru drivere care în mod nativ nu le suportă şi poate rescrie parametrii de tip nume sau „?” la un tip corespunzător, dacă driverul suportă doar unul dintre stiluri.
Parametri
statement
Trebuie să fie o instrucţiune SQL validă pentru serverul bazei de date.
driver_options
Matricea stochează una sau mai multe perechi key=>value pentru a seta valorile atributelor pentru obiectul PDOStatement întors de metodă. De obicei se foloseşte pentru a seta valoarea PDO::ATTR_CURSOR la PDO::CURSOR_SCROLL pentru a cere un cursor derulant. Unele drivere au opţiuni specifice care pot fi setate în momentul pregătirii.
Valori întoarse
Dacă serverul bazei de date pregăteşte cu succes instrucţiunea, PDO::prepare() întoarce un obiect PDOStatement. În cazul unui eşec, PDO::prepare() întoarce FALSE
Exemplu. Pregătirea unei instrucţiuni SQL cu parametri nume
<?php
/* Executa instructiunea pregatita */
$sql = 'SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));
$red = $sth->fetchAll();
$sth->execute(array(':calories' => 175, ':colour' => 'yellow'));
$yellow = $sth->fetchAll();
?>
Exemplu. Pregătirea unei instrucţiuni SQL cu parametri „?”
<?php
/* Executa instructiunea pregatita */
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));
$red = $sth->fetchAll();
$sth->execute(array(175, 'yellow'));
$yellow = $sth->fetchAll();
?>