Rumah >pembangunan bahagian belakang >tutorial php >bindParam lwn. bindValue: Apakah Perbezaan Utama dalam PDO PHP?
Memahami Perbezaan antara bindParam dan bindValue
Soalan:
Apakah perbezaan asas antara PDOStatement::bindParam() dan PDOStatement::bindValue()?
Jawapan:
Menurut entri manual PDOStatement::bindParam, perbezaan utama terletak pada tingkah laku rujukan kedua-dua kaedah. bindParam mengikat pembolehubah sebagai rujukan, manakala bindValue mengikat nilai pembolehubah. Tingkah laku rujukan ini mula dimainkan semasa pelaksanaan PDOStatement::execute().
bindParam Contoh:
Pertimbangkan kod berikut:
$sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindParam(':sex', $sex); // bind the variable using bindParam $sex = 'female'; $s->execute(); // execute with WHERE sex = 'female'
Di sini, bindParam mengikat $seks sebagai rujukan. Apabila pernyataan itu dilaksanakan, ia merujuk kepada nilai semasa $sex, yang telah berubah kepada 'perempuan'. Oleh itu, pertanyaan akan mendapatkan semula hasil untuk pelajar 'perempuan'.
Contoh bindValue:
Sekarang mari kita periksa contoh serupa menggunakan bindValue:
$sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindValue(':sex', $sex); // bind the variable's value using bindValue $sex = 'female'; $s->execute(); // execute with WHERE sex = 'male'
Dalam kes ini, bindValue mengikat nilai $sex pada masa mengikat, iaitu 'lelaki'. Oleh itu, pertanyaan akan sentiasa mendapatkan keputusan untuk pelajar 'lelaki', walaupun nilai $sex diubah kemudian. Ini menunjukkan tingkah laku bukan rujukan bindValue.
Atas ialah kandungan terperinci bindParam lwn. bindValue: Apakah Perbezaan Utama dalam PDO PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!