1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php pdo 参数绑定 PDO绑定参数的其他方法

php pdo 参数绑定 PDO绑定参数的其他方法

时间:2020-11-12 16:33:36

相关推荐

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=newPDO('mysql:host=localhost;dbname=test','root','root');

$sql="INSERTtest_pdo(username,password,email)VALUES(?,?,?)";

$stmt=$pdo->prepare($sql);

$username='testuser111';

$password='123456';

$email='testuser11@';

$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@';

$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=newPDO('mysql:host=localhost;dbname=test','root','root');

$sql="selectusername,password,emailfromtest_pdowhereid<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();

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。