PHP 5.1 发布时将附带一个全新的数据库连接层,即 PHP Data Objects (PDO)。虽然 PHP 一直都拥有很好的数据库连接,但 PDO 让 PHP 达到一个新的高度。下面跟着小编一起来学习pdo。
首先PDO提供了操作多种数据库的统一接口。(面向对象)
PDO的主要数据库驱动需要同步到我们php.ini中的一个扩展项
extension=php_pdo.dll
除了将上面的这个配置项打开,还需要打开以下的数据库扩展打开:
;extension=php_pdo_firebird.dll ;extension=php_pdo_informix.dll ;extension=php_pdo_mssql.dll ;extension=php_pdo_mysql.dll ;extension=php_pdo_oci.dll ;extension=php_pdo_oci8.dll ;extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll
现在我们来写一个添加的代码:
header('content-type:text/html;charset=utf8'); //连接数据库,主机名 $dsn="mysql:dbname=stucourse;host=127.0.0.1"; //数据库的用户名 $user="root"; //数据库的密码 $password="root"; //生成PDO对象(面向对象); $object = new PDO($dsn,$user,$password); //执行添加 $sql="insert into stu(`stu_name`,`stu_sex`,`stu_age`) values('zhangsan','2','18')"; if($object->exec($sql)){ echo '添加成功'; }
对于PDO,我们还有许多需要了解的地方,接着往下看吧
这是一个查询的代码:(大家可以看一下,这是返回了一个索引+关联的数组)
header('content-type:text/html;charset=utf8'); //连接数据库 $dsn="mysql:dbname=stucourse;host=127.0.0.1"; //数据库的用户名 $user="root"; //数据库的密码 $password="root"; //生成PDO对象 $object = new PDO($dsn,$user,$password); $sql="select * from stu"; $result = $object->query($sql); while($arr=$result->fetch()){ print_r($arr); }
如果我们只想让他返回一个关联的数组呢?
header('content-type:text/html;charset=utf8'); //连接数据库 $dsn="mysql:dbname=stucourse;host=127.0.0.1"; //数据库的用户名 $user="root"; //数据库的密码 $password="root"; //生成PDO对象 $object = new PDO($dsn,$user,$password); $sql="select * from stu"; //$result = $object->query($sql); //while($arr=$result->fetch()){ // print_r($arr); //} $object->setAttribute(PDO::ATTR_ERRMODE, PDO::CASE_UPPER); $result = $object->query($sql); $result->setFetchMode(PDO::FETCH_ASSOC); $result_array = $result->fetchAll(); print_r($result_array);
setAttribte()是设置数组的属性,ATTR_ERRMODE是将关联数组设置为小写,ATTR_CASE是将关联数组设置为大写,CASE_UPPER
是强制转换。
PDO::CASE_UPPER是设置关联索引为小写,
PDO::CASE_LOWER -- 强制列名为小写
PDO::CASE_NATURAL -- 列名按照原始方式(关联数组小写形式)
setFetchMode()方法设置获取结果集的返回值类型,同样类型还有:
PDO::FETCH_NUM -- 数字索引形式数组
PDO::FETCH_BOTH --两者数组形式都有
PDO::FETCH_OBJ -- 按照对象的形式