• PHP PDO bindParam 和 bindValue 有什么区别


    bindParam 和 bindValue

    bindValue()

    • 与 PDOStatement::bindValue() 不同,该变量被绑定为引用,并且只会在调用 PDOStatement::execute() 时进行评估。

    bindParam()

    • 调用 PDOStatement::bindParam() 将PHP变量绑定到参数标记:绑定变量将其值作为输入传递并接收其关联参数标记的输出值(如果有)

    PHP PDOStatement:bindParam 与 bindValue

    • 这是一个重复执行查询的普通地方,每次迭代使用不同的参数。
    • 但是,使用传统的 query() 方法和循环机制会带来开销,因为为了有效性和编码方便而重复解析或多或少相同的查询,并且需要使用新的重复重新配置查询每次迭代的值。
    • 使用准备好的语句消除了这个问题。使用 PDOStatement 类在 PHP 中很容易完成。
    • bindValue 和 bindParam PDOStatement 方法都用于将变量绑定到参数(在 SQL 语句中使用名称或问号占位符)。
    • 将参数专门绑定到指定的变量名 bindParam。
    • 绑定为引用,而绑定一个可能是变量的值,bindValue。
    • 参数的整数或字符串。

    为了使区别更清楚,我们可以查看代码示例:

    • 两者都将变量绑定到占位符的参数。
    • bindParambindValue中,变量可以绑定到参数。
    php代码
    1. < ?php
    2. $name = 'collins';
    3. $sql = 'INSERT INTO feeds (name) VALUES (:name)';
    4. $update = $conn -> prepare($sql);
    5. $update -> bindParam(':name', $name);
    6. $update -> execute();
    php代码
    1. < ?php
    2. $name = 'collins';
    3. $sql = 'INSERT INTO feeds (name) VALUES (:name)';
    4. $update = $conn -> prepare($sql);
    5. $update -> bindValue(':name', $name);
    6. $update -> execute();
    • bindParam将变量绑定为引用。
    • 例如,当一个变量被分配为对另一个变量的引用时,分配为引用的变量值的变化也会影响父变量。
    • 为了创建引用,使用&

    例子

    javascript代码
    1. $a = 'good boy';
    2. $b = &$a; // $a and $b both equal "good boy"
    3. $b = "bad boy"; // $a and $b both equal "bad boy"
    4. echo "$a"; // echos "bad boy"
    • 在检查bindParam描述时,您可以看到该方法的第二个参数接受一个作为引用传递的变量,并且只会在调用 execute() 时进行评估。

    因此,即使在 bindParam() 方法被调用后,我们仍然可以更改绑定到参数的变量的值,如下所示:

    javascript代码
    1. $name = 'collins';
    2. $sql = 'INSERT INTO feeds (name) VALUES (:name)';
    3. $update = $conn -> prepare($sql);
    4. $update -> bindParam(':name', $name);
    5. $name = 'john';
    6. $update -> execute(); // execute with john inserted into the column "name"
    • 上面的代码会将 'john' 绑定到 :name 参数,因为正如我们所提到的,在使用 bindParam 时,变量是通过引用绑定的。
    • “bindValue”接受不同的数据类型。
    • 与仅将变量名绑定到参数的 bindParam() 不同,使用 bindValue,您可以绑定变量以及整数、浮点数和字符串。

    通过“bindValue”将整数绑定到参数。

    php代码
    1. < ?php
    2. $sql = 'INSERT INTO feeds (numbers) VALUES (:number)';
    3. $update = $conn -> prepare($sql);
    4. $update -> bindValue(':number', 100);
    5. $update -> execute();

    通过“ bindValue ”将字符串绑定到参数

    php代码
    1. < ?php
    2. $sql = 'INSERT INTO feeds (names) VALUES (:name)';
    3. $update = $conn -> prepare($sql);
    4. $update -> bindValue(':name', 'collins');
    5. $update -> execute();
    • 当您尝试使用 bindParam 将字符串或数字(浮点数/整数)绑定到参数时,您将收到此错误:

    “致命错误:无法通过引用传递参数 2”

  • 相关阅读:
    小米--测试开发
    【计算机视觉】图像聚类&噪声
    Java教程:二进制数组与十六进制字符串之间的相互转换
    Java对象深拷贝 终极方案 deep clone an object
    Kafka入门到精通-阶段一(入门&实战&监控)
    2022 CCPC桂林 G. Group Homework
    开源云财务软件,财务软件源码,永久免费财务软件
    JS 图片的左右切换
    网络服务器是干什么用的
    vscode 阅读 linux kernel 源码
  • 原文地址:https://blog.csdn.net/allway2/article/details/126841254