php pdo 参数绑定,PDO绑定参数的其他方法
摘要:在《PDO中預處理語句占位符的使用?》已經介紹了參數綁定方法bindParam(),冒號‘:’占位符和問號‘?’都可以使用這個方法綁定參數,而且還可以指定綁定參數的類型,再次確保在執行sql中傳入參數的安全性。PDO擴展中,除了bindParam()方法外,還有其它的方法也可以綁定參數。
在《PDO中預處理語句占位符的使用》已經介紹了參數綁定方法bindParam(),冒號‘:’占位符和問號‘?’都可以使用這個方法綁定參數,而且還可以指定綁定參數的類型,再次確保在執行sql中傳入參數的安全性。PDO擴展中,除了bindParam()方法外,還有其它的方法也可以綁定參數。
1、bindValue()方法綁定參數
bindValue()和bindParam()一樣,都屬于PDOStatement對象中的方法。該方法也是把一個值綁定到一個參數。bindValue()同樣有3個參數PDOStatement::bindValue?(?mixed?$parameter?,?mixed?$value?[,?int?$data_type?=?PDO::PARAM_STR?]?)?:?bool
執行成功時返回?TRUE, 或者在失敗時返回?FALSE。parameter
參數標識符。對于使用命名占位符的預處理語句,應是類似?:name?形式的參數名。對于使用問號占位符的預處理語句,應是以1開始索引的參數位置。
value
綁定到參數的值
data_type
使用?PDO::PARAM_*?常量明確地指定參數的類型。
bindValue()方法使用示例<?php
header('content-type:text/html;charset=utf-8');
try{
$pdo=new?PDO('mysql:host=localhost;dbname=test','root','root');
$sql="INSERT?test_pdo(username,password,email)?VALUES(?,?,?)";
$stmt=$pdo->prepare($sql);
$username='testuser111';
$password='123456';
$email='testuser11@qq.com';
$stmt->bindValue(1,$username,PDO::PARAM_STR);
$stmt->bindValue(2,$password,PDO::PARAM_STR);
$stmt->bindValue(3,$email);
$stmt->execute();
//再次綁定參數執行
$username='testuser222';
$password='123456';
$email='testuser22@qq.com';
$stmt->bindValue(1,$username,PDO::PARAM_STR);
$stmt->bindValue(2,$password,PDO::PARAM_STR);
$stmt->bindValue(3,$email);
$stmt->execute();
echo?$stmt->rowCount();
}catch(PDOException?$e){
echo?$e->getMessage();
}
從bindValue()的使用示例來看再對比前文bindParam(),這兩個方法使用方法似乎一樣,既然如此為什么會有兩個方法呢?請看下面的圖:
通過這兩個圖,可以明顯的發現,bindValue()方法是先給參數然后綁定參數最后執行,而且每次執行execute()前都需要再次綁定參數,而bindParam()方法則沒有這個順序問題,也無需再次綁定參數,在給定參數之前或者之后都不會報錯。
2、bindColumn()方法綁定參數
bindColumn() 綁定一列到一個 PHP 變量
安排一個特定的變量綁定到一個查詢結果集中給定的列。這個方法綁定的是結果集PDOStatement::bindColumn?(?mixed?$column?,?mixed?&$param?[,?int?$type?[,?int?$maxlen?[,?mixed$driverdata?]]]?)?:?bool
執行成功時返回?TRUE, 或者在失敗時返回?FALSE。
參數說明column
結果集中的列號(從1開始索引)或列名。如果使用列名,注意名稱應該與由驅動返回的列名大小寫保持一致。
param
將綁定到列的?PHP?變量名稱
type
通過?PDO::PARAM_*?常量指定的參數的數據類型。
maxlen
預分配提示。
driverdata
驅動的可選參數。
下面通過具體的示例來理解bindColumn()方法<?php
header('content-type:text/html;charset=utf-8');
try{
$pdo=new?PDO('mysql:host=localhost;dbname=test','root','root');
$sql="select?username,password,email?from?test_pdo?where?id<20";
$stmt=$pdo->prepare($sql);
$stmt->execute();
$stmt->bindColumn(1,$username);
$stmt->bindColumn(2,$password);
$stmt->bindColumn(3,$email);
//綁定參數后需要用fetch(PDO::FETCH_BOUND)來獲取結果集
while?($stmt->fetch(PDO::FETCH_BOUND))?{
echo?'用戶名:'.$username.'-密碼:'.$password.'-郵箱'.$email.'
';
}
}catch(PDOException?$e){
echo?$e->getMessage();
}
總結
以上是生活随笔為你收集整理的php pdo 参数绑定,PDO绑定参数的其他方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea调试怎么跳出循环_IDEA调试技
- 下一篇: php 地址传递,PHP引用符传递存储