PHP扩展之PDO

2026-01-14 02:43:13

1、获取目前系统中实现的数据库pdo扩展

static array PDO::getAvailableDrivers ( void )

array pdo_drivers ( void )

PHP扩展之PDO

2、构造方法,创建数据库连接对象,失败抛出异常信息

PDO::__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )

$dsn 数据源名称也称之为DSN,包含数据库请求链接的信息。如;数据库类型:数据库名称和地址

PHP扩展之PDO

3、数据库属性设置和获取

bool PDO::setAttribute ( int $attribute , mixed $value )

mixed PDO::getAttribute ( int $attribute )

PHP扩展之PDO

4、特殊字符的转义

public string PDO::quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] )

PHP扩展之PDO

5、数据库查询,只能执行查询语句

public PDOStatement PDO::query ( string $statement )

public PDOStatement PDO::query ( string $statement , int $PDO::FETCH_COLUMN , int $colno )

public PDOStatement PDO::query ( string $statement , int $PDO::FETCH_CLASS , string $classname , array $ctorargs )

public PDOStatement PDO::query ( string $statement , int $PDO::FETCH_INTO , object $object )

执行SQL语句,返回一个结果集作为一个PDOStatement对象

PHP扩展之PDO

6、执行sql语句返回影响行数适用于删除,添加,修改

int PDO::exec ( string $statement )

PHP扩展之PDO

7、返回最后插入行的ID或序列值

string PDO::lastInsertId ([ string $name = NULL ] )

$name 应该返回ID的那个序列对象的名称。

返回值

如果没有为参数 name 指定序列名称,PDO::lastInsertId() 则返回一个表示最后插入数据库那一行的行ID的字符串。

如果为参数 name 指定了序列名称,PDO::lastInsertId() 则返回一个表示从指定序列对象取回最后的值的字符串。

如果当前 PDO 驱动不支持此功能,则 PDO::lastInsertId() 触发一个 IM001 SQLSTATE 。

PHP扩展之PDO

8、事务处理方式

检查是否在一个事务内

bool PDO::inTransaction ( void )

启动一个事务

bool PDO::beginTransaction ( void )

提交一个事务

bool PDO::commit ( void )

回滚一个事务

PDO::rollBack ( void )

在实际操作中可能需要同时值多条sql语句才能表示一个业务逻辑的完整完成,所以在事务就十分重要

PHP扩展之PDO

9、错误信息

mixed PDO::errorCode ( void ) 返回错误码,错误码是一个五位的字符串,00000表示没有错误

public array PDO::errorInfo ( void ) 返回一个到错误信息的数组

PHP扩展之PDO

10、为了避免出现sql注入的情况出现,pdo提供了一种特殊的方法对sql语句进行处理

public PDOStatement PDO::prepare ( string $statement [, array $driver_options = array() ] )

该方法只是对sql语句进行预处理,得到一个PDOStatement 对象,然后通过完善PDOStatement 对象的方式完善sql语句

常见的方式有两种

1.使用:+变量的方式代替需要填写的位置

2.是使用?的方式代替需要填的的位置

下面我们针对这两种方式做如下实例:

在实例中会使用到PDOStatement 对象中的下面方法:

bool PDOStatement::execute ([ array $input_parameters ] ) 执行一条预处理语句

bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] ) 绑定一个参数到指定的变量名

$parameter 参数标识符。对于使用命名占位符的预处理语句,应是类似 :name 形式的参数名。对于使用问号占位符的预处理语句,应是以1开始索引的参数位置。

$variable 绑定到 SQL 语句参数的 PHP 变量名。

$data_type 使用 PDO::PARAM_* 常量明确地指定参数的类型。要从一个存储过程中返回一个 INOUT 参数,需要为 data_type 参数使用按位或操作符去设置 PDO::PARAM_INPUT_OUTPUT 位。

$length 数据类型的长度。为表明参数是一个存储过程的 OUT 参数,必须明确地设置此长度。

bool PDOStatement::bindValue ( mixed $parameter , mixed $value [, int $data_type = PDO::PARAM_STR ] ) 把一个值绑定到一个参数

PHP扩展之PDO

PHP扩展之PDO

PHP扩展之PDO

PHP扩展之PDO

PHP扩展之PDO

PHP扩展之PDO

11、内容获取函数

mixed PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )

fetch_style

控制下一行如何返回给调用者。此值必须是 PDO::FETCH_* 系列常量中的一个,缺省为 PDO::ATTR_DEFAULT_FETCH_MODE 的值 (默认为 PDO::FETCH_BOTH )。

PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组

PDO::FETCH_BOTH(默认):返回一个索引为结果集列名和以0开始的列号的数组

PDO::FETCH_BOUND:返回 TRUE ,并分配结果集中的列值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量。

PDO::FETCH_CLASS:返回一个请求类的新实例,映射结果集中的列名到类中对应的属性名。如果 fetch_style 包含 PDO::FETCH_CLASSTYPE(例如:PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE),则类名由第一列的值决定

PDO::FETCH_INTO:更新一个被请求类已存在的实例,映射结果集中的列到类中命名的属性

PDO::FETCH_LAZY:结合使用 PDO::FETCH_BOTH 和 PDO::FETCH_OBJ,创建供用来访问的对象变量名

PDO::FETCH_NUM:返回一个索引为以0开始的结果集列号的数组

PDO::FETCH_OBJ:返回一个属性名对应结果集列名的匿名对象

array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )

string PDOStatement::fetchColumn ([ int $column_number = 0 ] )

mixed PDOStatement::fetchObject ([ string $class_name = "stdClass" [, array $ctor_args ]] )

PHP扩展之PDO

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢