函數(shù):PDOStatement::bindValue()
適用版本:PHP 5 >= 5.1.0, PHP 7, PHP 8
用法:PDOStatement::bindValue() 方法使用給定的值將一個(gè)參數(shù)綁定到一個(gè)預(yù)處理語句中的占位符。這個(gè)方法允許你綁定一個(gè)具體的值到一個(gè)參數(shù),而不是綁定一個(gè)變量。
語法:bool PDOStatement::bindValue( mixed $parameter, mixed $value [, int $data_type = PDO::PARAM_STR ] )
參數(shù):
- $parameter: 需要綁定的占位符的參數(shù)名或者位置(從1開始)。
- $value: 需要綁定到占位符的值。
- $data_type (可選): 指定參數(shù)的數(shù)據(jù)類型,可以是 PDO::PARAM_* 常量之一,默認(rèn)為 PDO::PARAM_STR。
返回值:如果綁定成功,則返回 true,否則返回 false。
示例:
// 創(chuàng)建一個(gè)PDO連接
$dsn = 'mysql:host=localhost;dbname=test';
$username = 'root';
$password = 'password';
try {
$pdo = new PDO($dsn, $username, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
exit;
}
// 準(zhǔn)備預(yù)處理語句
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');
// 綁定參數(shù)值
$username = 'john_doe';
$stmt->bindValue(':username', $username, PDO::PARAM_STR);
// 執(zhí)行查詢
$stmt->execute();
// 獲取結(jié)果
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 輸出結(jié)果
foreach ($result as $row) {
echo $row['username'] . ' - ' . $row['email'] . '<br>';
}
在上面的示例中,我們首先創(chuàng)建了一個(gè)PDO連接,然后準(zhǔn)備了一個(gè)預(yù)處理語句,其中包含了一個(gè)占位符 :username
。然后,我們使用 PDOStatement::bindValue()
方法將變量 $username
的值綁定到了這個(gè)占位符上。最后,我們執(zhí)行了查詢并獲取了結(jié)果,然后通過循環(huán)輸出了每一行的用戶名和郵箱。
這個(gè)方法的好處是可以防止SQL注入攻擊,因?yàn)榻壎ǖ闹禃?huì)被自動(dòng)轉(zhuǎn)義和引用。另外,使用 bindValue()
方法時(shí),綁定的值是在綁定的時(shí)候就確定的,不會(huì)隨后的變量更改而改變。