站长资讯网
最全最丰富的资讯网站

有关PHP中PDO连接数据库的详细教程与实际操作演示

PDO—数据库抽象层

简介:PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,PDO解决了数据库连接不统一的问题。

一、 PDO简介

本章主要介绍PDO的安装与配置,以及使用PDO连接数据库的方法。

1-1PDO简介

PDO是PHP Data Object(PHP数据对象)的简称,它是与PHP5.1版本一起发布的,目前支持的数据库包括Firebird、FreeTDS、Interbase、MySQL、MS SQL Server、ODBC、Oracle、Postgre SQL、SQLite和Sybase。当操作不同数据库时,只需要修改PDO中的DSN(数据库源) ,即可使用PDO的统一接口进行操作。

PDO特性:

编码一致性:PDO提供可用于各种数据库的单一接口

灵活性:PDO在运行时必须加载数据库驱动程序,所以不需要每次在使用数据库时,重新配置和重新编译PHP

高性能:PDO是用C语言编写的编译为PHP,与用php编写的其他方案相比,虽然其他功能相同,但提供了更高的性能

面向对象特性:PDO是利用的PHP5面向对象的特性,可以获得更高效的数据库通信。

注意:PDO扩展只是一个抽象的接口层,利用PDO扩展本身,并不能实现任何数据库的操作,必须使用一个特性的形式把各自的特色表现出来才行。

有关PHP中PDO连接数据库的详细教程与实际操作演示

1-2 PDO的配置与启用

有关PHP中PDO连接数据库的详细教程与实际操作演示

1-3 PDO连接数据库

有关PHP中PDO连接数据库的详细教程与实际操作演示

1.通过参数形式连接数据库(重点掌握此种办法)

//通过参数形式连接数据库 try{  $dsn='mysql:host=localhost;dbname=school';  $username='root';  $password='root';  $pdo=new PDO($dsn,$username,$password);  var_dump($pdo); }catch (PDOException $e){     echo $e->getMessage(); };  需要注意:dsn是你的数据源  输出结果:object(PDO)#1 (0) { }

二、 PDO对象的使用

主要介绍PDO对象方法的使用。

2-1 [PDO] exec()方法执行建表操作 有关PHP中PDO连接数据库的详细教程与实际操作演示

有关PHP中PDO连接数据库的详细教程与实际操作演示

<?php try{     //驱动器的名称 mysql     $pdo=new PDO('mysql:host=localhost;dbname=school','root','root');     //exec():执行一条sql语句并返回其受影响的行数;如果没有受影响的记录,它返回0     //exec对于select没有作用     //PHP是一个Web编程语言,在编程过程中难免会遇到用echo来输出大段的html和javascript脚本的情况,     //如果用传统的输出方法 ——按字符串输出的话,     //肯定要有大量的转义符来对字符串中的引号等特殊字符进行转义,以免出现语法错误。     //如果是一两处还可以容忍,但是要是一个完整的 html文本或者是一个200行的js我想是谁都会崩溃的。     //这就是PHP为什么要引入一个定界符的原因——至少一大部分原因是这样的。      /*    1.PHP定界符的作用就是按照原样,包括换行格式什么的,输出在其内部的东西;     2.在PHP定界符中的任何特殊字符都不需要转义;     3.PHP定界符中的PHP变量会被正常的用其值来替换。         PHP中的定界符格式是这样的:     <<<Eof     ……     Eof;*/     $sql=<<<EOF     create table if not exists t_teacher(    id int UNSIGNED auto_increment primary key,    teaname varchar(20) not null UNIQUE,    pwd char(32) not null,    email varchar(30) not null ); EOF;    $res= $pdo->exec($sql);     var_dump($res); }catch (PDOException $e){     echo $e->getMessage(); };

输出结果:int(0);

2-2 [PDO] exec()方法执行插入记录操作

续上面:插入一条或多条记录

<?php try{     //驱动器的名称 mysql     $pdo=new PDO('mysql:host=localhost;dbname=school','root','root');     $sql='insert into t_teacher values(default,"king5","'.md5('king').'","waly@qq.com");';     $res=$pdo->exec($sql);     echo $res; }catch (PDOException $e){     echo $e->getMessage(); };
<?php try{     //驱动器的名称 mysql     $pdo=new PDO('mysql:host=localhost;dbname=school','root','root');     //$sql='insert into t_teacher values(default,"king6","'.md5('king').'","waly@qq.com");';    $sql=<<<EOF       insert into t_teacher values       (default,"king7","'.md5('king').'","waly@qq.com"),       (default,"king8","'.md5('king').'","waly@qq.com"),       (default,"king9","'.md5('king').'","waly@qq.com") EOF;      $res=$pdo->exec($sql);     echo '受影响的记录的条数为:'. $res."<br/>";     //$pdo->lastInsertId():得到新插入记录的ID号     //echo '最后插入的ID号为:'.$pdo->lastInsertId(); }catch (PDOException $e){     echo $e->getMessage(); };

2-3 [PDO] exec()方法执行其他SQL操作

有关PHP中PDO连接数据库的详细教程与实际操作演示

本身是king,修改为king,会是0条记录被影响.

lastInsertId() 只能对插入有影响。

exec()对查询无作用

2-4 [PDO] errorCode()和errorInfo()方法查看错误信息

<?php try{     //驱动器的名称 mysql     $pdo=new PDO('mysql:host=localhost;dbname=school','root','root');    //错误的表名     $sql='insert into t_teacher1 values(default,"king6","'.md5('king').'","waly@qq.com");';     $res=$pdo->exec($sql);     if($res===false){         //$pdo->errorCode(); SQLSTATE的值         echo $pdo->errorCode();         echo '<hr/>';       //$pdo->errorInfo():返回的错误信息的数组,数组中包含3个单元      //0=>SQLSTATE(错误编号),1=>CODE(错误码),2=>INFO(错误信息)         $errInfo=$pdo->errorInfo();         print_r($errInfo);     } }catch (PDOException $e){     echo $e->getMessage(); };

2-5 [PDO] query()方法执行查询语句

<?php try{     //驱动器的名称 mysql     $pdo=new PDO('mysql:host=localhost;dbname=school','root','root');     //查询一条记录     //$sql='select * from t_teacher where id=5';     //查询多条记录     $sql='select * from t_teacher';     //$pdo->query($sql):执行sql语句,返回PDOStatement对象:需要遍历这个对象,将里面的内容取出来     $stmt=$pdo->query($sql);     var_dump($stmt); //只能看出这个语句返回的是一个对象     echo '<hr/>';     foreach ($stmt as $row){         print_r($row);         echo '<hr/>';         echo '编号:'.$row['id'].'<br/>';         echo '用户名:'.$row['teaname'].'<br/>';         echo '邮箱:'.$row['email'].'<br/>';         echo '<hr/>';     } }catch (PDOException $e){     echo $e->getMessage(); };
Query()用于插入数据  <?php try{     //驱动器的名称 mysql     $pdo=new PDO('mysql:host=localhost;dbname=school','root','root');     //插入一条记录     $sql='insert into t_teacher values(default,"king12","'.md5('king').'","waly@qq.com");';     //$pdo->query($sql):执行sql语句,返回PDOStatement对象:需要遍历这个对象,将里面的内容取出来     $stmt=$pdo->query($sql);     var_dump($stmt); //只能看出这个语句返回的是一个对象 }catch (PDOException $e){     echo $e->getMessage(); };

注意:

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号