PHP扩展之PDO
1、获取目前系统中实现的数据库pdo扩展
static array PDO::getAvailableDrivers ( void )
array pdo_drivers ( void )

2、构造方法,创建数据库连接对象,失败抛出异常信息
PDO::__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )
$dsn 数据源名称也称之为DSN,包含数据库请求链接的信息。如;数据库类型:数据库名称和地址

3、数据库属性设置和获取
bool PDO::setAttribute ( int $attribute , mixed $value )
mixed PDO::getAttribute ( int $attribute )

4、特殊字符的转义
public string PDO::quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] )

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对象

6、执行sql语句返回影响行数适用于删除,添加,修改
int PDO::exec ( string $statement )

7、返回最后插入行的ID或序列值
string PDO::lastInsertId ([ string $name = NULL ] )
$name 应该返回ID的那个序列对象的名称。
返回值
如果没有为参数 name 指定序列名称,PDO::lastInsertId() 则返回一个表示最后插入数据库那一行的行ID的字符串。
如果为参数 name 指定了序列名称,PDO::lastInsertId() 则返回一个表示从指定序列对象取回最后的值的字符串。
如果当前 PDO 驱动不支持此功能,则 PDO::lastInsertId() 触发一个 IM001 SQLSTATE 。

8、事务处理方式
检查是否在一个事务内
bool PDO::inTransaction ( void )
启动一个事务
bool PDO::beginTransaction ( void )
提交一个事务
bool PDO::commit ( void )
回滚一个事务
PDO::rollBack ( void )
在实际操作中可能需要同时值多条sql语句才能表示一个业务逻辑的完整完成,所以在事务就十分重要

9、错误信息
mixed PDO::errorCode ( void ) 返回错误码,错误码是一个五位的字符串,00000表示没有错误
public array PDO::errorInfo ( void ) 返回一个到错误信息的数组

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 ] ) 把一个值绑定到一个参数






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 ]] )
