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了。
码字很辛苦,转载请注明来自NAERENET的《php之bindValue和bindParam的区别》
2022-06-30 15:49:13 MySQL