欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP PEAR DB类安装与使用实例详解

程序员文章站 2024-04-03 09:17:22
...
  在PHP网站开发中,由于其支持各种数据库引擎,如Mysql,Mssql,Pgsql,sqlite等,并对各种数据库系统都提供了不同的函数作为接口,给PHP网站开发者带来很多便利,但同时也带来了平台移植性的问题,随着底层数据库的改变,PHP代码也必须改变。对于这个问题,有各种解决方法,如使用PHP ADODB类,PHP PEAR DB类或者自行编写PHP DB类,将各种数据库的函数操作聚合在一起等,今天和大家分享如何安装使用PHP PEAR DB类,以实现不同数据库的访问功能。

准备工作

  1、在使用PHP PEAR DB类访问数据库之前,需要安装PHP PEAR,然后通过PEAR来下载安装DB类,即。

    pear install db

  2、根据需要安装相关数据库,比如Mysql,Mssql,Pgsql,Sqlite等,同时在PHP.INI中找到Dynamic Extensions,引入对应数据的DLL文件,并重启Apache。

  注意:由于我使用的是DedeAMPZ,在安装PHP PEAR时一定要安装在DedeAMPZ\WebRoot\Default目录下,否则在引入DB.php时会报Failedopening required ‘DB.php’错误,即找不到DB类(could not find pear db library),因为DedeAMPZ可能对相关的目录做了限制。

PHP PEAR DB类使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59


require_once("DB.php");

$userName = 'root';
$password = '123456';
$hostName = 'localhost';
$dbName = 'test';

$dsn = "mysql://$userName:$password@$hostName/$dbName";

$dbCon = DB::connect($dsn);

if (DB::isError($dbCon)) {
die ($dbCon->getMessage());
}

$sql = "CREATE TABLE leapsoul (".
"`id` INT( 11 ) UNSIGNED NOT NULL ,".
"`name` VARCHAR( 30 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ,".
"`age` INT( 2 ) NOT NULL ,".
"`birthday` VARCHAR( 30 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ,".
"`sex` INT( 1 ) NOT NULL ,".
"PRIMARY KEY ( `id` )".
") ENGINE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci";

$result = $dbCon->query($sql);

if (DB::isError($result)) {
die ($result->getMessage());
}

$sql = "insert into leapsoul(id,name,age,birthday,sex) values(1,'leapsoul',1,'2009-05-13',1),(2,'leapsoul',1,'2009-05-13',1),(3,'leapsoul',1,'2009-05-13',1)";

$result = $dbCon->query($sql);

if (DB::isError($result)) {
die ($result->getMessage());
}

$dbCon->setFetchMode(DB_FETCHMODE_ASSOC);

$sql = "select * from leapsoul";

$result = $dbCon->query($sql);

if (DB::isError($result)) {
die ($result->getMessage());
}
for($i=0;$i$result->numRows();$i++)
{
$info = &$result->fetchRow();

echo "name:".$info['name'];
echo "birthday:".$info['birthday']."
"
;
}
$result->free();

$dbCon->disconnect();
}

注释:

第2行:引入PHP PEAR DB 类库

第4-7行:设定访问的数据库、登录用户名、密码、主机

第9-11行:设定DSN参数,并进行数据库链接,我连接的数据库为Mysql
知识点:从pear/DB.php的parseDSN函数中我们可以看到$dsn参数有以下几种格式
phptype://username:password@protocol+hostspec:110//usr/db_file.db?mode=0644
phptype://username:password@hostspec/database_name
phptype://username:password@hostspec
phptype://username@hostspec
phptype://hostspec/database
phptype://hostspec
phptype(dbsyntax)
phptype

其中
phptype: 代表使用的数据库,如Mysql,Mssql,Pgsql,Sqlite等
dbsyntax: Database used with regards to SQL syntax etc.(没看明白)
protocol: 使用的协议,比如TCP等
hostspec: 主机,比如数据库存放在远程服务器上,可指定端口(hostname[:port])
database: 数据库服务器上的数据库名
username: 登录的用户名
password: 登录的密码

第13-15行:错误处理,如数据库链接出错,则报错。

第17-38行:执行数据库表创建并插入测试数据。

第40行:setFetchMode函数是PHP PEAR DB让用户设定返回记录集是数字索引数组还是关联数组或者对象,此处我设定为关联数组的形式。默认DB_FETCHMODE_ORDERED模式,其他两种模式为DB_FETCHMODE_ASSOC与DB_FETCHMODE_OBJECT

第49-55行:输出记录集

第56-58行:释放记录集并关闭连接

PHP PEAR DB类部分函数说明:更多函数可参考pear/db.php和pear/db/common.php

connect():数据库链接函数
query():SQL语句执行函数
execute():SQL语句执行函数,与query()函数使用方式略有不同,具体可参考pear/db/common.php文件
setFetchMode():设定返回记录集是数字索引数组还是关联数组或者对象
numRows():返回记录集有多少行
numCols():返回记录集有多少列
free():释放记录集
disconnect():关闭数据库链接
affectedRows():操作影响的记录行数
isManip():判断一个查询是数据处理还是数据定义操作

平台移植说明

  理想情况下,移植到其他类型的数据库平台时,只需要修改PEAR DB中的DSN字符串参数即可,但是对于一些特定数据库特有的查询,当移植到其他数据库平台时只能进行修改了。

其他

  DB目录下存了所有PHP PEAR DB支持的相关数据库,有兴趣的朋友可看看。

  通过上述代码实例,我们就可以利用PHP PEAR DB类来实现不同数据库的访问功能。

:PHP网站开发教程-leapsoul.cn版权所有,转载时请以链接形式注明原始出处及本声明,谢谢。