PDO预处理语句PDOStatement对象使用总结

本文总结了PDO预处理语句PDOStatement对象的使用,包括其在防止SQL注入、事务处理、错误处理等方面的应用。同时,提供了多个关于PDO系列技术文章的链接,深入探讨PHP数据库抽象层PDO的相关知识。
摘要由CSDN通过智能技术生成

PDO预处理语句PDOStatement对象使用总结

PDO对预处理语句的支持需要使用PDOStatement类对象,但该类对象并不是通过NEW关键字实例化出来的,而是通过PDO对象中的prepare()方法,在数据库服务器中准备好一个预处理的SQL语句后直接返回的。如果通过之前执行PDO对象中的query()方法返回的PDOStatement类对象,只代表的是一个结果集对象。而如果通过执行PDO对象中的prepare()方法产生的PDOStatement类对象,则为一个查询对象,能定义和执行参数化的SQL命令。PDOStatement类中的全部成员方法如下所示:

PDOStatement::bindColumn ― 绑定一列到一个 PHP 变量

PDOStatement::bindParam ― 绑定一个参数到指定的变量名

PDOStatement::bindValue ― 把一个值绑定到一个参数

PDOStatement::closeCursor ― 关闭游标,使语句能再次被执行。

PDOStatement::columnCount ― 返回结果集中的列数

PDOStatement::debugDumpParams ― 打印一条 SQL 预处理命令

PDOStatement::errorCode ― 获取跟上一次语句句柄操作相关的 SQLSTATE

PDOStatement::errorInfo ― 获取跟上一次语句句柄操作相关的扩展错误信息

PDOStatement::execute ― 执行一条预处理语句

PDOStatement::fetch ― 从结果集中获取下一行

PDOStatement::fetchAll ― 返回一个包含结果集中所有行的数组

PDOStatement::fetchColumn ― 从结果集中的下一行返回单独的一列。

PDOStatement::fetchObject ― 获取下一行并作为一个对象返回。

PDOStatement::getAttribute ― 检索一个语句属性

PDOStatement::getColumnMeta ― 返回结果集中一列的元数据

PDOStatement::nextRowset ― 在一个多行集语句句柄中推进到下一个行集

PDOStatement::rowCount ― 返回受上一个 SQL 语句影响的行数

PDOStatement::setAttribute ― 设置一个语句属性

PDOStatement::setFetchMode ― 为语句设置默认的获取模式。

1、准备语句

重复执行一个SQL查询,通过每次迭代使用不同的参数,这种情况使用预处理语句运行效率最高。使用预处理语句,首先需要在数据库服务器中先准备好“一个SQL语句”,但并不需要马上执行。PDO支持使用“占位符”语法,将变量绑定到这个预处理的SQL语句中。对于一个准备好的SQL语句,如果在每次执行时都要改变一些列值,这种情况必须使用“占位符号”而不是具体的列值。在PDO中有两种使用占位符的语法:“命名参数”和“问号参数”,使用哪一种语法要看个人的喜好。

使用命名参数作为占位符的INSERT插入语句:

$dbh->prepare(“insert into contactinfo(name,address,phone) values(:name,:address,:phone)”);


需要自定义一个字符串作为“命名参数”,每个命名参数需要冒号(:)开始,参数的命名一定要有意义,最好和对应的字段名称相同。

使用问号(?)参数作为占位符的INSERT插入语句:

$dbh->prepare(“insert into contactinfo(name,address,phone) values(?,?,?)”);


问号参数一定要和字段的位置顺序对应。不管是使用哪一种参数作为占位符构成的查询,或是语句中没有用到占位符,都需要使用PDO对象中的prepare()方法,去准备这个将要用于迭代执行的查询,并返回PDOStatement类对象。
2、绑定参数

当SQL语句通过PDO对象中的prepare()方法在数据库服务器端准备好了以后,如果使用了占位符,就需要在每次执行时替换输入的参数。可以通过PDOStatement对象中的bindParam()方法,把参数变量绑定到准备好的占位符上(位置或名字要对应)。方法bindParame()的原型如下所示:

bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值