+ -
当前位置:首页 → 问答吧 → PHP DBX 应用ABC

PHP DBX 应用ABC

时间:2006-05-18

来源:互联网

PHP DBX 应用ABC
PHP本身内置了DBX函数,DBX模块是一个数据库抽象层(DBX中的“X”就表示其所能支持的X种数据库)。DBX函数允许你访问所有DBX支持的数据库。
以PHP4为例,DBX支持下列数据库:
        Mysql
        ODBC
        PgSQL
        Mssql(Microsoft SQL Server)
        Fbsql
要使用DBX,就要事先让PHP支持DBX,以WINDOWS平台为例:
让WINDOWS平台上的PHP支持DBX,其实很简单,DBX的DLL文件已经预编译并且包含在WINDOWS版本的HP安装文件中。找到那个熟悉的php.ini文件。查找到下面一行:
Extension_dir=./
将其改为:
Extension_dir=”X:/php/extensions”,其中X为你安装PHP所在的盘符,PHP为你PHP所在的安装后的目录。
然后再找到下面一行:
;windows extensions
找到下面这一行:
;Extension=php_dbx.dll
默认这一行作为注释,去掉注释(即去掉前面的分号)。
保存,重启APACHE。
Phpinfo()一下,看看有没有对DBX的支持,如果有,那就表明配置完成。可以使用DBX了。
DBX有自己的一套相关函数,可以用它们来访问多种数据库:
1.        Dbx_close(connection):顾名思义关闭一个数据连接,参数CONNECTION就是创建数据库连接的链接标识符。
2.        DBX¬_CONNECT(MODULE,HOST,DATABASE,USER,PASSWORD,PERSISTENT)
用于建立数据库连接。参数:
MODULE-想要连接的数据库模块(也就是数据库类型),它的值有:
1.        DBX_MYSQL-mysql数据库。
2.        DBX_ODBC-任何支持ODBC连接的数据库(兴奋吧)
3.        DBX_PGSQL-postgresql数据库
4.        DBX_MSSQL-MS SQL数据库。
5.        DBX_FBSQL-Frontbase数据库。
HOST-数据库主机名称或者IP地址
USER-用户名
PASSWORD-密码
PERSISTENT-是否建立永久连接(可省略)
3.        DBX_error(CONNECTION),相关错误。CONNECTION参数同上。
4.        DBX_QUERY(CONNECTION,SQL STATEMENT,FLAGS)数据库查询操作。
a)        参数CONNECTION同上;
b)        SQL STATEMENT:标准的SQL查询语句;
c)        FLAG-返回的相关信息,可省略。
暂时只介绍这四个函数。
下面用例子来说明:用DBX来连接MYSQL和MSSQL两种数据库。
创建数据库和表:
---------db.sql------------
Create database mydb;
Use mydb;
Create table test (
ID int not null,
Username varchar (10),
primary key(id));
<html>
        <body>
                <?php
                $MODULE=DBX_MYSQL;        //连接MYSQL数据库
                $server="127.0.0.1";                        //数据库服务器所在的主机名或者IP地址。
                $user="root";                                        //访问数据库的用户名
                $password="";                                        //用户密码
                $database="mydb";                        //所要操作的数据库
               
                //连接数据库
                $dbconn=dbx_connect($MODULE,$server,$database,$user,$password) or die("不能连接数据库");
                ?>
                <h1>填写信息</h1>
                <form action=dbx_test.php method=post>
                <p><b>输入学号:</b>
                        <br>学号: <input type="text" name="id" maxlength="8" value="2006001">
                        <br>姓名: <input type="text" name="username">
                        <input type="submit" name="addinfo" value="完成输入">
                </form>
                <?php
                if(isset($addinfo))                        //如果单击了提交按钮
                {
                        $sql="insert into test values('$id','$username')";
                        $result=dbx_query($dbconn,$sql);                //执行查询语句,这里为插入一条记录
                       
                        if($result==0)
                        {
                                echo "<p><b>ERROR!".dbx_error($dbconn);        //错误处理
                        }
                        else
                        {
                                print("<p>添加 $username 成功!");
                        }
                       
                        $sql="select * from test";
                        $result=dbx_query($dbconn,$sql);                        //查询数据,浏览刚插入的记录。
                        if($result==0)
                        {
                                echo dbx_error($dbconn);
                        }
                        else
                        {
                                return $result;
                        }
                        if(sizeof($result->data)==0)
                        {
                        ?>
                        <h3>数据库中没有数据,你需要添加些数据!
                        <?php
                        }
                        else
                        {
                                global $result;
                                for($i=0;$i<sizeof($result->data);$i++)
                                {
                                        echo $result->data[$i]['id'];
                                        echo "<br>";
                                        echo $result->data[$i]['username'];
                                        echo "<br>";
                                }
                        }
                }
                ?>
        </body>
</html>
如果你使用的是SQL SERVER数据库,那么将上面的$MODULE=DBX_MSSQL就可以,看DBX就是这么简单。


注:本文参考:《advanced php for web professionals》

作者: define_zhang   发布时间: 2006-05-17

支持原创的。

注:本文参考:《advanced php for web professionals》
这本书如何?

作者: Per   发布时间: 2006-05-18

这本书,不适合初级入门者,因为它不讲基础。但也不太深奥,有一点基础就可以,要点简洁明了,例子也一样。个人感觉还不错。

作者: define_zhang   发布时间: 2006-05-18

问一下,我的PHP版本是5.1.2的
怎么没有DBX这个DLL文件啊
;Extension=php_dbx.dll这个选项也没有

作者: niohe   发布时间: 2006-05-19

问得很好.
请查看:http://www.php.net/manual/zh/ref.dbx.php
内容如下
-------------------------------------------
XXVI. dbx Functions
简介
The dbx module is a database abstraction layer (db 'X', where 'X' is a supported database). The dbx functions allow you to access all supported databases using a single calling convention. The dbx-functions themselves do not interface directly to the databases, but interface to the modules that are used to support these databases.

注: 本扩展已被移动到 PECL 库中且自以下版本起不再被绑定到 PHP 中:5.1.0.
---------------------------------------------------------------------------

作者: define_zhang   发布时间: 2006-05-19

可能是我没说明白,我是在PHP4.X下做的.

作者: define_zhang   发布时间: 2006-05-19