當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


PHP bindParam和bindValue的區別用法及代碼示例


PDO語句::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。
程序:

php


<?php
// setup PDO connection
$db = new PDO('mysql:host=localhost;dbname=geeks','root','');
// Get username
$username = 'geeksforgeeks';
     
$stmt = $db->prepare("SELECT * FROM users WHERE user = :username");
// Use bindParam function
$stmt->bindParam(':username', $username);
$username = 'g4g';
     
$stmt->execute();
?>

注意:SQL 語句將使用 ‘g4g’ 作為用戶名執行,因為:username 在執行時搜索 $username,而 $username 的最後一個已知值是 ‘g4g’。

PDO語句::bindValue()函數

PDOStatement::bindValue() 函數是 PHP 中的內置函數,用於將值綁定到參數。此函數將一個值綁定到 SQL 中相應的命名或問號占位符,用於準備語句。

用法:

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

參數:該函數接受如上所述和如下所述的三個參數:

  • $parameter:它是一個參數標識符,用於使用名稱占位符準備語句。它是形如:name 的參數名稱。
  • $value:該參數用於保存綁定參數的值。
  • $data_type:它是使用 PDO::PARAM_* 常量的參數的顯式數據類型。

返回值:該函數成功時返回 True,失敗時返回 False。
程序:

php


<?php
// setup PDO connection
$db = new PDO('mysql:host=localhost;dbname=geeks','root','');
// Get username
$username = 'geeksforgeeks';
     
$stmt = $db->prepare("SELECT * FROM users WHERE user = :username");
// Use bindValue function
$stmt->bindValue(':username', $username);
$username = 'g4g';
     
$stmt->execute();
?>

注意:SQL 語句將使用‘geeksforgeeks’ 作為用戶名執行,因為文字值“geeksforgeeks” 已在bindValue() 函數之前綁定到用戶名。對 $username 的進一步更改將不會反映在準備好的語句中。
bindParam() 和 bindValue() 之間的區別:

  1. bindParam():
    1. bindParam() 函數綁定一個參數SQL 語句中的命名占位符或問號占位符。
    2. bindParam()函數用於傳遞變量而不是值.
    3. bindParam() 函數在運行時執行。
    4. bindParam 是 PHP inbuilt function
    5. 參數可以在bindParam()中修改。
    6. 它的返回值是boolean類型。
  2. bindValue():
    1. bindValue() 函數綁定一個值SQL 語句中的命名或問號。
    2. bindValue() 函數用於同時傳遞值和變量.
    3. bindValue 函數在編譯時執行。
    4. bindValue() 是一個內置的 PHP 函數
    5. bindValue()中的參數無法修改。
    6. 它的返回值是boolean類型。


相關用法


注:本文由純淨天空篩選整理自Samdare B大神的英文原創作品 Difference between bindParam and bindValue in PHP。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。