PDOStatement::bindParam()
and PDOStatement::bindValue()
a> arasındaki fark nedir?
Cevap bindParam
a> için belgelerde:
PDOStatement :: bindValue () aksine, değişken bir referans olarak bağlıdır ve sadece PDOStatement :: () denir yürütmek anda değerlendirilecektir.
Ve execute
a>
parametre işaretçileri PHP değişkenleri bağlanacak PDOStatement :: bindParam () çağırır: Varsa bağlı değişkenler ilişkili parametre belirteçlerin, girdi olarak onların değerini geçmek ve çıkış değerini alırsınız
Burada düşünmek bazı şunlardır:
bindParam
, sadece değişkenleri iletebilirsiniz ile; değil değerlerbindValue
, hem (tabii ki değerleri ve değişkenleri) geçebilir ilebindParam
değişkenleri ile çalışır:support the invocation of stored procedures that return data as output parameters, and some also as input/output parameters that both send in data and are updated to receive it.
Bazı DB motorları ile, saklanan prosedürler (PHP saklı yordam bir değer döndüren) (prosedüre PHP bir değeri veren) ve çıkışına iki giriş için kullanılabilecek parametreler olabilir; bu parametreleri bağlamak için, sen bindValue değil bindParam kullanmak için var, ve var.
Dan the manual entry fveyaPDOStatement::bindParam
a>:
PDOStatement::bindValue()
, değişken bir referans olarak bağlı olduğu ve sadecePDOStatement::execute()
denir anda değerlendirilecektir aksine [bindParam
ile].
Bu nedenle, örneğin:
$sex = 'male';
$s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex');
$s->bindParam(':sex', $sex); // use bindParam to bind the variable
$sex = 'female';
$s->execute(); // executed with WHERE sex = 'female'
veya
$sex = 'male';
$s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex');
$s->bindValue(':sex', $sex); // use bindValue to bind the variable's value
$sex = 'female';
$s->execute(); // executed with WHERE sex = 'male'