php 预处理原理,PHP的PDO对象预处理的2种实现方法,实现原理详解

2ff087f8b77d7d0c98311f2dd0934eef.png

PDO预处理

$author = '李白';

$kind   = '五言绝句';

$id     = '5';

$query = 'SELECT * FROM poetry WHERE author=? AND kind=? AND id>?';//用问号代替要预处理的值

$stmt = $pdo->prepare($query);//开启预处理,将 sql 语句传入

实例代码开始:

$stmt->bindValue(1, $author, [参数3]);//设定 ? 1位置的值

$stmt->bindValue(2, $kind, [参数3]);//设定 ? 2位置的值

$stmt->bindValue(3, $id, [参数3]);//设定 ? 3位置的值

参数3:  PDO::PARAM_STR:默认值,字符串类型 通常不写第三个参数

PDO::PARAM_INT:整数类型

$suc = $stmt->execute();//以预处理执行前面传入的 SQL 语句

实例代码结束:

$args = [$author, $kind, $id];

$suc  = $stmt->execute($args); 以上绑定方式可简写为此方法

实例代码开始:

$query = 'SELECT * FROM poetry WHERE author=:au AND kind=:ki AND id>:id';

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

$stmt->bindValue(':au', $author);

$stmt->bindValue(':ki', $kind);

$stmt->bindValue(':id', $id);

$suc = $stmt->execute();以上绑定方式也可写为此方法,:au,:ki,:id称为命名占位符

实例代码结束:

$args = [':au'=>$author, ':ki'=>$kind, ':id'=>$id];

$suc  = $stmt->execute($args); 以上绑定方式可简写为此方法

$arr = $stmt->fetchAll(PDO::FETCH_ASSOC);//得到全部预处理查询结果,为索引数组

$pdo->beginTransaction();:开启数据库事务机制(开启事务机制的表必须为INNODB)

$pdo->commit();:使事务机制之后的改动生效

$pdo->rollBack();:使事务机制之后的改动回滚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值