PEAR的DB库使用
在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
安装好后,在PEAR里边多出来几个文件了:
2、根据需要安装相关数据库,比如Mysql,Mssql,Pgsql,Sqlite等,同时在PHP.INI中到Dynamic Extensions,引入对应数据的DLL文件,并重启Apache。
<?
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());rows函数的使用方法及实例
}
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());rows函数的使用方法及实例
}
$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";
$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']."<br>";
}
$result->free();
$dbCon->disconnect();
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']."<br>";
}
$result->free();
$dbCon->disconnect();
}
运行的时候,出现了错误。后来才发现,即时在PHP里边安装了DB类库,但是,仍然需要把DB类库拷贝到项目中去,同时还要下载一个文件DB.php,把这个文件也拷贝到项目中。运行程序后有:
注释:
第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
知识点:从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://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: 登录的密码
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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论