KategorieProgramowanie

[PHP] Jaka jest różnica pomiędzy funkcjami bindParam() a bindValue() w PDO ?

Do dołączania parametrów do zapytania przygotowanego przez funkcję prepare mamy dostępne dwie funkcje bindParam oraz bindValue, które dają ten sam efekt czyli podłączają wartości do zapytania. Jedyna różnica pomiędzy nimi to taka że bindParam atrybut jest przekazywany przez referencję zaś w przypadku bindValue przez wartość. Poniższe przykłady powinny jasno pokazać różnicę.

Użycie bindParam

$col = 'test';
$sql = 'SELECT column FROM tabela WHERE col1 = :col';

$s = $db -> prepare($sql);
$s -> bindParam(':col', $col);

$col = 'test2';

$s -> execute(); 
/**
 * wykona się zapytanie: 
 * SELECT column FROM tabela WHERE col1 = 'test2'
 */

Użycie bindValue

$col = 'test';
$sql = 'SELECT column FROM tabela WHERE col1 = :col';

$s = $db -> prepare($sql);
$s -> bindValue(':col', $col);

$col = 'test2';

$s -> execute(); 
/**
 * wykona się zapytanie: 
 * SELECT column FROM tabela WHERE col1 = 'test'
 */

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *