PDOStatement::bindParam -- Leagă un parametru la numele specificat al variabilei
Descriere
bool PDOStatement::bindParam ( mixed parameter, mixed &variable [, int data_type [, int length [, mixed driver_options]]] )
Leagă o variabilă PHP la un nume de substituent (placeholder) corespunzător sau la un marcaj semn de întrebare din interogarea SQL care a fost folosit pentru a pregăti instrucţiunea. Diferit de PDOStatement::bindValue(), variabila este legată ca referinţă şi va fi evaluată doar în momentul când este apelat PDOStatement::execute().
Majoritatea parametrilor sunt parametri introduşi de utilizator, parametri care sunt folosiţi în maniera read-only pentru a construi interogarea. Unele drivere suportă invocarea procedurilor stocate care întorc datele ca şi parametri de ieşire, iar altele ca parametri de intrare/ieşire care sunt trimişi şi actualizaţi.
Parametri
parameter
Identificatorul parametrului. Pentru o declaraţie pregătită (prepared statement) care foloseşte substituenţi (placeholders), acesta va fi numele unui parametru de forma :name. Pentru o declaraţie pregătită care foloseşte marcatorul „?”, va fi poziţia indexată cu 1 a parametrului.
variable
Numele variabilei PHP care se leagă la parametrul instrucţiunii SQL.
data_type
Tipul de dată explicit pentru parametrul care foloseşte constante PDO::PARAM_*. Pentru a întoarce un parametru INOUT dintr-o procedură stocată, se foloseşte operatorul OR pentru a seta PDO::PARAM_INPUT_OUTPUT pentru parametrul data_type.
length
Lungimea tipului de dată. Pentru a indica dacă parametrul este de tip OUT dintr-o procedură stocată, implicit trebuie setată lungimea.
driver_options
Exemple
Executarea unei declaraţii pregătite (prepared statement) cu substituenţi nume
<?php
/* Executa o declaratie pregatita prin legarea variabilelor PHP */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>
Executarea unei declaraţii pregătite (prepared statement) cu marcatorul "?"
<?php
/* Executa o declaratie pregatita prin legarea variabilelor PHP */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>
Apelarea unei proceduri stocate cu un parametru INOUT
<?php
/* Apelarea unei proceduri stocate cu un parametru INOUT */
$colour = 'red';
$sth = $dbh->prepare('CALL puree_fruit(?)');
$sth->bindParam(1, $colour, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->execute();
print("Dupa mixarea fructului, culoarea este: $colour");
?>