Rumah >pembangunan bahagian belakang >tutorial php >bindParam lwn. bindValue: Apakah Perbezaan Utama dalam PDO PHP?

bindParam lwn. bindValue: Apakah Perbezaan Utama dalam PDO PHP?

DDD
DDDasal
2024-12-18 16:04:24215semak imbas

bindParam vs. bindValue: What's the Key Difference in PHP's PDO?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn