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