PHP扩展之PDO
PDO作为数据扩扩展中抽象层方式之一,为PHP访问数据库定义了一个轻量级的一致接口,实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。
PDO常用函数
- 01
获取目前系统中实现的数据库pdo扩展 static array PDO::getAvailableDrivers ( void ) array pdo_drivers ( void )
- 02
构造方法,创建数据库连接对象,失败抛出异常信息 PDO::__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] ) $dsn 数据源名称也称之为DSN,包含数据库请求链接的信息。如;数据库类型:数据库名称和地址
- 03
数据库属性设置和获取 bool PDO::setAttribute ( int $attribute , mixed $value ) mixed PDO::getAttribute ( int $attribute )
- 04
特殊字符的转义 public string PDO::quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] )
- 05
数据库查询,只能执行查询语句 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对象
- 06
执行sql语句返回影响行数适用于删除,添加,修改 int PDO::exec ( string $statement )
- 07
返回最后插入行的ID或序列值 string PDO::lastInsertId ([ string $name = NULL ] ) $name 应该返回ID的那个序列对象的名称。 返回值 如果没有为参数 name 指定序列名称,PDO::lastInsertId() 则返回一个表示最后插入数据库那一行的行ID的字符串。 如果为参数 name 指定了序列名称,PDO::lastInsertId() 则返回一个表示从指定序列对象取回最后的值的字符串。 如果当前 PDO 驱动不支持此功能,则 PDO::lastInsertId() 触发一个 IM001 SQLSTATE 。
- 08
事务处理方式 检查是否在一个事务内 bool PDO::inTransaction ( void ) 启动一个事务 bool PDO::beginTransaction ( void ) 提交一个事务 bool PDO::commit ( void ) 回滚一个事务 PDO::rollBack ( void ) 在实际操作中可能需要同时值多条sql语句才能表示一个业务逻辑的完整完成,所以在事务就十分重要
- 09
错误信息 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 ]] )