PDO是PHP Data Object(PHP数据对象)的简称。是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口。在PHP5.1版本及以后版本中可以使用。
1、PDO连接数据库
在PDO中,要建立与数据库的连接需要实例化PDO的构造函数。
new PDO($dsn, $user, $pwd);
//$dsn:Data Source Name。数据源名称,提供连接数据库需要的信息。包括3部分,即PDO驱动名称(如mysql、sqlite或者pgsql)、冒号和驱动特定的语法。每种数据库都有其特定的驱动语法。
MySQL的$dsn格式为:"mysql:host=主机名称;dbname=数据库名称"
//$user:使用的数据库用户名;$pwd:使用的数据库密码
2、PDO中执行SQL语句
(1) exec(): 返回执行后受影响的行数。
int PDO::exec(string statement) //statement是要执行的SQL语句
(2)query(): 用于返回执行查询后的结果集
PDOStatement PDO::query(string statement)
(3)预处理语句——prepare()和execute()
预处理语句包括prepare()和execute()两个方法。首先,通过prepare()方法做查询的准备工作,然后,通过execute()方法执行查询。并且还可以通过bindParam()方法来绑定参数提供给execute()方法。
PDOStatement PDO::prepare(string statement [, array driver_options])
bool PDOStatement::execute( [array input_parameters] )
**预处理语句:是要运行的SQL的一种编译过的模板,有两大好处:查询只需解析(或准备)一次,但是可以用相同或不同的参数执行多次;提供给预处理语句的参数不需要用引号括起来,预处理语句的两个方法会对提供给它们的参数进行自动转义。
PDO中执行SQL语句方法的选择:
(1)如果只执行一次查询,PDO->query是较好的选择。然而使用时也要相当小心,如果没有在结果集中获取到所有数据,那么下次调用pdo->query时可能会失败。
(2)如果多次执行SQL语句,最理想的方法是prepare和execute.
3、PDO中获取结果集
(1) fetch(): 获取结果集中的下一行。
mixed PDOStatement::fetch([int fetch_style [, int cursor_orientation [, int cursor_offset]]])
//fetch_style:控制结果集的返回方式,
_____________________________________________________________________________________
PDO::FETCH_ASSOC | 关联数组形式
PDO::FETCH_NUM | 数字索引数组形式
PDO::FETCH_BOTH | 两者数组形式都有,这是默认的
PDO::FETCH_OBJ | 按对象的形式,类似于以前的mysql_fetch_object()
PDO::FETCH_BOUND | 以布尔值的形式返回结果,同时将获取的列值赋给bindParam()方法中指定的变量
PDO::FETCH_LAZY | 以关联数组、数字索引数组和对象3中形式返回结果
————————————————————————————————————————————————
//cursor_orientation: PDOStatement对象的一个滚动游标,可用于获取指定的一行。
//cursor_offset: 游标的偏移量。
(2)fetchAll(): 获取结果集中的所有行。其返回值是一个包含结果集中所有数据的二维数组。
array PDOStatement::fetchAll( [int fetch_style [, int column_index]] )
//column_index: 字段的索引
(3)fetchColumn(): 获取结果集中下一行指定列的值。
string PDOStatement::fetchColumn([ int column_number])
//可选参数column_number设置行中列的索引值,该值从0开始。如果省略该参数则将从第一列开始取值。