使用PHPLIB访问多个数据库

访问|数据|数据库

    PHPLIB是PHP的一些扩展库,使用它我们可以很方便地对数据库进行各种操作,不过,如果你要使用多个数据库的话,它就显得力不从心了,本文介绍了通过扩展PHPLIB,让你鱼和熊掌兼得,在使用PHPLIB的同时可以使用多个数据库,而且从中你也可以了解到面向对象编程和如何扩展库的知识,值得一读。
    数据库管理

 你可以在一个大型的数据库中放入任何表。不过时间长了,将会令数据库变得越来越大,服务器可能会跟不上IO的工作,或者没有足够的内存应付所有的访问?要分开现有的数据又非常难。明智的办法是开始时就使用分开的数据库,并且进行有效的数据库管理。 如果你有一个卖书的网站,你可能有作者的列表,书价的列表,还有当前的库存和订单的列表。当你的业务不断增长时,订单将会不断地增长,而且处理每个订单都需要进行很多的磁盘访问。很可能你将在某一天将所有的订单都放到一个会计系统中。

 现在就将订单放到一个独立的数据库吧。由于库存也是通过订单更新的,因此库存量也放到同样的数据库中。

 作者的列表和书的列表都是一些静态的信息,要经常读取,但很少更新。实际上,更新一个作者的记录可能只需要每5年一次,只在作者写了一本新书(或者去世)时进行。放这些数据的服务器的配置可与放订单数据库的服务器完全不同。

    包含PHPLIB

 PHPLIB通过一个称为DB_Sql的类访问SQL数据库。根据你需要使用的数据库类型,将不同的inc文件包含在你的代码中。在这个例子中,我使用MySQL的版本。

 为了在你的代码中使用DB_Sql,要将PHPLIB文件安装在它们自己的目录中。然后,找到你的cgi-bin目录,并且在cgi-bin的目录旁创建phplib目录。下一步,拷贝所有的PHPLIB .inc文件到phplib目录。最后,修改php.inc文件,只要将“include_path=”的行改为该phplib目录就可以了。

include_path是PHP使用include()或者require()时查找的目录,在我的NT workstation中,include的路径是:

include_path = ".;i:/project52/includes;i:/project52/phplib";

在Linux的系统上

include_path = ".;/home/httpd/includes;/home/httpd/phplib";

在每个PHP页面的顶部加入
<?php

require(common.php);

?>
common.php3放在includes目录中,包含了每个页面要用到的所有数据和函数。在这个例子中的common.php是:
<?php

require(db_mysql.inc);
require(ct_sql.inc);
require(session.inc);
require(auth.inc);
require(perm.inc);
require(user.inc);
require(page.inc);

?>

  如果你想知道每个inc文件的用处,可阅读http://phplib.netuse.de上的PHPLIB文档。Db_mysql.inc包含了所有DB_SQL类的定义。如果你想使用PostGreSQL代替MySQL,只要用db_pgsql.inc代替db_mysql.inc就可以了。还有10个其它的.inc文件,可以使用MS SQL、Oracle、Sybase或者其它的数据库。

  要注意的是,在这个例子中,require()和include()是完全一样的。不过,如果放在代码中,或者在if语句中使用时,Require()和include的使用是完全不同的,并且有不同的运行结果。

扩展PHPLIB

  PHPLIB通过一个DB_Sql类产生的对象来访问数据库。Db_mysql.inc包含了为MySQL修改过的DB_Sql类。我们将通过在common.php中加入代码来扩展DB_sql,这些代码将加在包含db_mysql.inc的行后。

DB_Sql包含了很多用作查询的函数,我们要作修改的是:

<?php

/* public: 连接管理 */
function connect($Database = "", $Host = "", $User = "", $Password = "") {
/* 处理默认连接 */
if ("" == $Database)
$Database = $this->Database;
if ("" == $Host)
$Host = $this->Host;
if ("" == $User)
$User = $this->User;
if ("" == $Password)
$Password = $this->Password;

/* 建立连接,选择数据库 */

if ( 0 == $this->Link_ID ) {
$this->Link_ID=mysql_pconnect($Host, $User, $Password);
if (!$this->Link_ID) {
$this->halt("pconnect($Host, $User, \$Password) failed.");
return 0;
}

if (!@mysql_select_db($Database,$this->Link_ID)) {
$this->halt("cannot use database ".$this->Database);
return 0;
}
}

return $this->Link_ID;
}

?>

[1] [2] [3] [4] 下一页  

时间: 2024-10-27 06:22:34

使用PHPLIB访问多个数据库的相关文章

PHPLIB访问多个数据库

访问|数据|数据库 [摘 要] 如果你要使用多个数据库的话,它就显得力不从心了,本文介绍了通过扩展PHPLIB,让你鱼和熊掌兼得,在使用PHPLIB的同时可以使用多个数据库,而且从中你也可以了解到面向对象编程和如何扩展库的知识. PHPLIB是PHP的一些扩展库,使用它我们可以很方便地对数据库进行各种操作,不过,如果你要使用多个数据库的话,它就显得力不从心了,本文介绍了通过扩展PHPLIB,让你鱼和熊掌兼得,在使用PHPLIB的同时可以使用多个数据库,而且从中你也可以了解到面向对象编程和如何扩展

java-把常用高频访问数据从数据库加载到内存,数据库的变化能够自动实时更新内存。求大侠给思路

问题描述 把常用高频访问数据从数据库加载到内存,数据库的变化能够自动实时更新内存.求大侠给思路 把常用高频访问数据从数据库加载到内存,数据库的变化能够自动实时更新内存. 解决方案 其实数据库内部本身已经有这样的缓存机制,操作系统也有.你再做其实经常会弄巧成拙. 你知道"高频"数据的淘汰算法是什么么?这一点估计你写不过主流的数据库,那别的都是白扯. 解决方案二: 大型数据库本身带有很好的缓存机制,不需要咱们进行任何干预 解决方案三: 数据库更新的时候,把数据送到内存刷新换一下.

Delphi编程访问SQL Server数据库

delphi是一个优秀的可视化软件开发环境,并已广泛应用于数据库软件的开发.在DelphiC/S版环境中,结合其优化的数据库操作,以及Borland Database Engine(即:BDE,数据库引擎),对开发客户机/服务器系统下的网络数据库软件提供了更加快速有效的途径.在客户机/服务器系统中,服务器端我们采用Microsoft SQL Server6.0 for WindowsNT作为数据库服务器:另外,在客户端采用Delphi编写客户软件.在此,我们假定SQLServer设置完毕,并已经

VFP中用SPT访问SQL Server数据库

VFP因它简单易学,可快速建立应用软件而深受广大程序员喜爱,但其数据库系统不安全也令广大用户非常头痛.随着MS SQL Server数据库系统的推广应用,其强大的安全性能普遍受到好评.笔者在长期的编程实践中,发现利用VFP的SQL pass-through(SPT)技术结合MS SQL Server数据库系统,也能像VB.Delphi.PowerBuilder一样轻松开发出优秀的客户/服务器(C/S)应用软件.现通过编写一个简单的通信录例子和广大VFP爱好者共同探讨. 一.服务器端MS SQL

Python访问纯真IP数据库脚本分享

  这篇文章主要介绍了Python访问纯真IP数据库脚本分享,本文直接给出实现代码,需要的朋友可以参考下 项目中有这样的需求,通过IP地址判断客户端是网通的还是电信的.从同事那拿了个纯文本的IP纯真数据库,用Python写了一个小程序,感觉挺好的.下面给出实现源码: ? 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 #!/

Spring代码通过DBCP数据库连接池访问ms access数据库的探讨

正在做一个升级项目project,project的意思就是不是application也不是platform,仅仅是一个project而已. 项目的需求之一就是对于升级前的数据,保存在access的*.mdb中的数据,继续能够访问. 我希望通过maven构建一个spring框架下的项目,那么目前的一个问题就是我的代码需要可以访问access数据库. 之前博文中,叙述了jdk8环境下java代码使用ucanaccess访问access数据库的过程. 接下来,也就是这篇博文,我希望讨论一下,在spri

Java Spring中同时访问多种不同数据库

开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中.使用Spring框架时,使用单一数据库是非常容易的,但如果要同时访问多个数据库的话事件就变得复杂多了. 本文以在Spring框架下开发一个SpringMVC程序为例,示范了一种同时访问多种数据库的方法,而且尽量地简化配置改动. 搭建数据库 建议你也同时搭好两个数据库来跟进我们的示例.本文中我们用了PostgreSQL和MySQL. 下面的脚本内容是在两个数据库中

如何让用户只能访问特定的数据库(MSSQL)

背景 客户的SQL Server实例上有多个厂商的数据库,每个数据库由各自的进行厂进行商维护, 为了限定不同厂商的维护人员只能访问自己的数据库,现需要给各个厂商限定权限,让他们登录SQL Server只能看到授权的数据库而无法看到其他数据库.   解决方案 1.先给不同的厂商创建不同的登录名(如下以一个厂商为例)     2.将登录名加入到public服务器角色中,然后点击确定   3.将public服务器角色的属性-->安全对象中取消查看所有数据库的权限 或者执行如下SQL: REVOKE V

sql-在另外电脑访问本机数据库问题

问题描述 在另外电脑访问本机数据库问题 用VS开发了一个C#的程序,连接的是本机数据库.现在需要将其在另外一台电脑执行.该如何访问数据库. 解决方案 本机访问其它电脑上的oracle数据库---------------------- 解决方案二: 你是内网的,局域网内的应该可以访问,如果是外网的电脑,访问不了,你需要做映射,豁开vpn 解决方案三: 将你之前连接数据库的url中的localhost改为目标电脑的IP地址即可 解决方案四: 需要知道数据库所在的IP地址,并且数据库需要开启服务器 解