DM PHP接口

本文档详细介绍了如何在Linux CentOS 7.6环境下,安装PHP 7.3.31并配置DM8数据库的PDO驱动。首先,需要安装必要的依赖库,然后编译并安装PHP。接着,配置php.ini文件以加载DM扩展,并设置相关连接参数。通过示例代码展示了PHP连接DM数据库、执行增删改查操作的过程。最后,提供了错误处理和正确运行的结果展示。
摘要由CSDN通过智能技术生成

开发工具:liunx centos7.6系统

开发对象:针对php类

开发语言:php 7.3.31

开发准备:liunx操作系统提前安装好DM8库环境,并设置环境变量LD_LIBRARY_PATH为依赖文件libdmdpi.so存放的路径

步骤:

  1. 下载源码包php-7.3.3tar.gz包并上传至服务器并解压和编译安装

#解压

tar -xvzf php-7.3.31.tar.gz

./configure --prefix=/soft/php/  --with-config-file-path=/soft/php

#编译源码包的过程中遇到赖包问题,安装对应依赖包

yum -y install libxml2*

#重新编译安装

./configure --prefix=/soft/php/  --with-config-file-path=/soft/php

make && make install

#创建软链接

ln -s /soft/php/bin/php /usr/bin/php

  

以下是编译安装完成截图:

 

  1. 配置DM PHP驱动

cp php.ini-production /soft/php/php.ini

php -v

 

 

编辑php.ini 添加以下内容(extension_dir, extension指定到dm8库环境中对应pdo扩展的so文件,此版本对应libphp73_dm.so)

[PHP_DM]

extension_dir ="/home/dmdba/dmdbms/drivers/php_pdo"

extension=libphp73_dm.so

[dm]

dm.port=5236

; 是否允许持久性连接

dm.allow_persistent = 1

; 允许建立持久性连接的最大数. -1 为没有限制.

dm.max_persistent = -1

; 允许建立连接的最大数(包括持久性连接). -1 为没有限制.

dm.max_links = -1

; 默认的主机地址

dm.default_host = localhost

; 默认登录的数据库

dm.default_db = SYSTEM

; 默认的连接用户名

dm.default_user = SYSDBA

; 默认的连接口令.

dm.default_pw = SYSDBA

;连接超时,这个参数未实际的用到,等待服务器支持

dm.connect_timeout = 10

;对于各种变长数据类型,每列最大读取的字节数。如果它设置为 0 或是小于 0,那么这读取变长字段时,将显示 NULL 值

dm.defaultlrl = 4096

; 是否读取二进制类型数据,如果它设置为 0,那么二进制将被 NULL 值代替

dm.defaultbinmode = 1

;是否允许检察持久性连接的有效性,如果设置为 ON,那么当重用一个持久性连接时会检察该连接是否还有效

dm.check_persistent = ON

使用php -m | grep DM 命令验证DM PHP 驱动模块是否加载成功,如下图

 

3. 开发示例

PHP 接口登录、登出示例程序 php_conn.php 如下

<?php

   header("Content-type:text/html;charset=utf-8"); //防止页面乱码

try

{

    $link = dm_connect("localhost:5236", "SYSDBA", "SYSDBA")

        or die("Could not connect : " . dm_error()."\n"); 

    //使用 dm_error 会显示 dm 的 php 接口返回的错误,执行成功,则继续往下执行。

    print "php: Connected successfully"."\n";

    /*断开连接*/

    dm_close($link);

}

catch(Exception $e)

{

    $e->getMessage() . "<br/>";

}

?>

使用php  php_conn.php调试运行

当上述配置中dm_connect中端口设置错误如51236

$link = dm_connect("localhost:51236", "SYSDBA", "SYSDBA")

        or die("Could not connect : " . dm_error()."\n")

报错如下:

 

正确的运行结果如下;

 

PHP 接口增、删、改、查四个基本操作,示例程序vi subject.php

<?php

   header("Content-type:text/html;charset=utf-8"); //防止页面乱码

try

{

    $link = dm_connect("localhost:5236", "SYSDBA", "SYSDBA")

        or die("Could not connect : " . dm_error()."\n"); 

    //使用 dm_error 会显示 dm 的 php 接口返回的错误,执行成功,则继续往下执行。

    print "php: Connected successfully"."\n";

    //初始化创建subject表

    $result = dm_exec($link, 'create table subject(name varchar2,score int)') or die("Query failed : " . dm_error()."\n");

        print "php: create table success"."\n";

    //插入数据

    $result = dm_exec($link, "insert into subject values('语文',119)") or die("Query failed : " . dm_error()."\n"); 

    print "php: insert success"."\n";

        //插入数据

    $result = dm_exec($link, "insert into subject values('数学',133)") or die("Query failed : " . dm_error()."\n"); 

    print "php: insert success"."\n";

        //插入数据

    $result = dm_exec($link, "insert into subject values('英语',140)") or die("Query failed : " . dm_error()."\n"); 

    print "php: insert success"."\n";

    //删除数据

    $result = dm_exec($link, "delete from subject where name='数学'") or die("Query failed : " . dm_error()."\n"); 

    print "php: delete success"."\n";

    //更新数据

    $result = dm_exec($link, 'update subject set name = \'英语-新课标\' where name=\'英语\'') or die("Query failed : " . dm_error()."\n"); 

    print "php: update success"."\n";

    //查询数据

    $result = dm_exec($link, "select * from subject") or die("Query failed : " . dm_error()."\n"); 

    print "<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\">\n";

    while ($line = dm_fetch_array($result))

    {

    print "\t<tr>\n";

    foreach ($line as $col_value) {

            print "\t\t<td>$col_value</td>\n";

        }

            print "\t</tr>\n";

    }

    print "</table>\n";   

    /*释放资源*/

    dm_free_result($result);

    print "php: select success"."\n";

    /*断开连接*/

    dm_close($link);

}

catch(Exception $e)

{

    $e->getMessage() . "<br/>";

}

?>

php subject.php 脚本调用运行结果如下:

 更多资讯请上达梦技术社区了解: https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值