php之bindValue和bindParam的區別


PDOStatement::bindValue — 

把一個值綁定到一個參數

綁定一個值到用作預處理的 SQL 語句中的對應命名占位符或問號占位符。

PDOStatement::bindParam —

 綁定一個參數到指定的變量名

綁定一個PHP變量到用作預處理的SQL語句中的對應命名占位符或問號占位符。 不同於 PDOStatement::bindValue() ,此變量作為引用被綁定,並只在 PDOStatement::execute() 被調用的時候才取其值。

區別用代碼表示如下:

$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'
$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'

當$SEX,被再次賦值時,用bindvalue綁定的,其值還是最開始的值male,但用bindparam綁定的,因為只有在execute()被調用時才會取變量的值,而這時候變量的$sex的值已經由原來的male變成female了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM