一、什么是PDO?
PDO是PHP Date Object(PHP数据对象)的简称,它是与PHP 5.1版本一起发行的。
目前支持的数据库包括Firebird、FreeTDS、Interbase、MySQL、MS SQL Server、ODBC、Oracle、Postgre SQL、SQLite和Sybase。
有了PDO,您不必再使用mysql_*函数、oci_*函数或者mssql_*函数,也不必再为它们封装数据库操作类,只需要使用PDO接口中的方法就可以对数据库进行操作。在选择不同的数据库时,只需修改PDO的DSN(数据源名称)。
二、PDO的作用与特点
1)编码的一致性
由于PHP可用的各种数据库扩展是由不同发行者编写的,所以尽管所有的扩展都提供了基本相同的特性,却不 满 足编码的一致性。PDO消除了这种不一致,提供了可用于各种数据库的单一接口;
2)灵活性
因为PDO在运行时加载必须的数据库驱动程序,所以不需要在每次使用不同数据库时重新配置和重新编译PHP。例如,如果数据库需要从SQL切换到MySQL,只需要加载PDO_MYSQL驱动程序就可以了。
3)面向对象特性
PDO利用PHP5的面向对象特性,可以获得更强大、更高效的数据库通信。
4)高性能
PDO是用C编写的,编译为PHP,与用PHP编写的其他解决方案相比,虽然其他都相同,但提供了更高的性能。
三、PDO的配置与启动
1)修改php.ini,添加MySQL的PDO扩展
打开PHP配置文件php.ini,找到php_pdo_mysql.dll这行去掉钱买你的分号
2)扩展目录中要有相应的扩展文件
打开PHP配置文件php.ini,找到extension_dir,这个就是我们扩展存在的目录,首先去掉前面的分号,然后修改扩展目录,我的扩展目录是在"E:/Web/php/ext",就改成extension_dir="E:/Web/php/ext"。
3)PDO连接不同的数据,要有不同的数据库驱动文件,即我们所加入配置文件的扩展
4)重新启动服务器,IIS/Apache,我的是apache,使配置生效
四、通过PDO连接数据库
4.1 PDO的构造函数
在PDO中,要建立与数据库的连接需要实例化PDO的构造函数,PDO构造函数的语法如下:
__construct(string $dsn[,string $username[,string $password[,array $driver_options]]])
dsn:数据源名,包括主机名、端口号和数据库名称。
语法格式:$dsn =“数据库类型:dbname=数据库名;host=数据库的域名”;
username:连接数据库的用户名。password:连接数据库的密码。
driver_options:连接数据库的其他选项。
例子(1)连接数据库、数据库的用户名、数据库的密码
$dsn = "mysql:dbname=test;host=127.0.0.1";
$user = "root";
$password="123456";
(2)声明对象
$object = new PDO($dsn,$user,$password);
实例:
$dbms='mysql';//数据库类型
$host='127.0.0.1';//数据库主机名 也可以是127.0.0.1
$dbName='db_database17';//使用的数据库名称
$user='root';//用户名
$pass='123456';//对应的密码
$dsn="$dbms:dbname=$dbName;host=$host";
$conn= new PDO($dsn,$user,$pass);//初始化一个PDO对象,就是创建了连接数据库的对象 $conn
构造函数用于,构造PDO对象,有了这个对象,我们我就可以使用里边的方法来访问数据库。
4.1.1 exec()方法 返回执行后受影响的行数
exec()方法返回执行后受影响的行数,:
通常用于 INSERT、DELETE和UPDATE语句中。
实例:
try{
$conn= new PDO($dsn,$user,$pass);//初始化一个PDO对象,就是创建了连接数据库的对象 $conn
$query="insert into tb_pdo_mysql(pdo_type,database_name,dates)values('".$_POST['pdo']."','".$_POST['databases']."','".$_POST['dates']."')";
$result=$conn->exec($query);
echo "数据添加成功,受影响的行数为:".$result;
} catch (PDOException $e){
die ("Error!:".$e->getMessage().'<br/>');
4.1.2 query()方法 用于返回执行查询后的结果集
query()方法用于返回执行查询后的结果集:
实例:
try{
$pdo = new PDO($dsn,$user,$pass);
$sql = 'select * from tb_pdo_mysql';
$result = $pdo->query($sql);
foreach ($result as $row) {
echo "<tr align='center'>"."<td>".$row['id']."</td>";
echo "<td>".$row['pdo_type']."</td>";
echo "<td>".$row['database_name']."</td>";
echo "<td>".$row['dates']."</td>"."</tr>";
}
} catch (PDOException $e){
die ("Error!:".$e->getMessage().'<br/>');
}
五、PDO常用方法及其应用
PDO::query()
主要是用于有记录结果返回的操作,特别是SELECT操作
PDO::exec()
主要是针对没有结果集合返回的操作,如INSERT、UPDATE等操作
PDO::prepare()
主要是预处理操作,需要通过$rs->execute()来执行预处理里面的SQL语句,这个方法可以绑定参数,功能比较强大(防止sql注入就靠这个)
PDO::lastInsertId()
返回上次插入操作,主键列类型是自增的最后的自增ID
PDOStatement::fetch()
是用来获取一条记录
PDOStatement::fetchAll()
是获取所有记录集到一个集合
PDOStatement::fetchColumn()
是获取结果指定第一条记录的某个字段,缺省是第一个字段
PDOStatement::rowCount()
主要是用于PDO::query()和PDO::prepare()进行DELETE、INSERT、UPDATE操作影响的结果集,对PDO::exec()方法和SELECT操作无效。
以上就是本文的全部内容,感谢大家支持JScript之家——编程学习者社区!
|