📜  PHPbindParam和bindValue的区别

📅  最后修改于: 2021-09-13 02:02:02             🧑  作者: Mango

PDOStatement::bindParam()函数

PDOStatement::bindParam()函数是PHP的一个内置函数,用于将参数绑定到指定的变量名。此函数绑定变量,将其值作为输入传递并接收其关联参数标记的输出值(如果有)。

句法:

bool PDOStatement::bindParam
( $parameter, $variable, $data_type, $length, $driver_options )

参数:该函数接受上面提到和下面描述的五个参数:

  • $parameter:它是一个参数标识符,用于使用名称占位符准备语句。它是形式 :name 的参数名称。
  • $variable:这个参数用来保存绑定到SQL语句参数的变量名。
  • $data_type:它是使用 PDO::PARAM_* 常量的参数的显式数据类型。
  • $length:该参数用于保存数据类型的长度。
  • $driver_options:该参数保存需要执行的操作。

返回值:此函数在成功时返回 True 或在失败时返回 false。
程序:

prepare("SELECT * FROM users WHERE user = :username");
  
// Use bindParam function
$stmt->bindParam(':username', $username);
   
 $username = 'g4g';
     
 $stmt->execute();
?>

注意: SQL 语句将使用 ‘g4g’ 作为用户名执行,因为 :username 在执行时搜索 $username,而 $username 的最后一个已知值是 ‘g4g’。

PDOStatement::bindValue()函数

PDOStatement::bindValue()函数是PHP的一个内置函数,用于将值绑定到参数。此函数将值绑定到用于准备语句的 SQL 中相应的命名或问号占位符。

句法:

bool PDOStatement::bindValue( $parameter, $value, $data_type )

参数:该函数接受上面提到和下面描述的三个参数:

  • $parameter:它是一个参数标识符,用于使用名称占位符准备语句。它是形式 :name 的参数名称。
  • $value:这个参数用来保存绑定参数的值。
  • $data_type:它是使用 PDO::PARAM_* 常量的参数的显式数据类型。

返回值:此函数在成功时返回 True 或在失败时返回 False。
程序:

prepare("SELECT * FROM users WHERE user = :username");
  
// Use bindValue function
$stmt->bindValue(':username', $username);
  
$username = 'g4g';
    
$stmt->execute();
?>

注意: SQL 语句将使用 ‘geeksforgeeks’ 作为用户名执行,因为字面量面值“geeksforgeeks”已在 bindValue()函数之前绑定到 :username 。对 $username 的进一步更改将不会反映在准备好的语句中。

bindParam() 和 bindValue() 的区别:

  1. 绑定参数():
    1. bindParam()函数将参数绑定到 SQL 语句中的命名或问号占位符。
    2. bindParam()函数用于传递变量而不是值
  2. 绑定值():
    1. bindValue()函数将值绑定到 SQL 语句中的命名或问号。
    2. bindValue()函数用于传递 value 和 variable