DM PHP接口连接

  1. 简介

DM PHP 是在 PHP 开放源码的基础上开发的一个动态扩展库,接口的实现参考了 MySQL PHP 扩展,无论在功能、参数以及调用过程都和后者十分类似,命名统一采用 dm 开头的小写英文字母方式,各个单词之间以下划线分割。PHP 应用程序可通过 DM PHP 扩展接口库访问 DM 数据库服务器。

  1. 部署环境

2‑1 部署环境

系统版本

Centos7.9

CPU型号

Intel(R) i5-7200U CPU (2核)

磁盘空间

40G

内存大小

2G

PHP版本

7.2.2

2‑2 磁盘规划

数据

/dev/mapper/vg_dm-lv_dmdata

备份

/dev/mapper/vg_dm-lv_dmbak

归档

/dev/mapper/vg_dm-lv_arch

2‑3 目录规划

数据库软件安装目录

/home/dmdba/dmdbms

实例安装目录

/dmdata

归档存放目录

/dmdata/arch

备份存放目录

/dmdata/dmbak/

  1. 达梦数据库PHP接口

    1. 安装PHP编译与使用依赖环境

yum install wget gcc libxml2 libxml2-devel sqlite-devel -y

3-1依赖环境安装成功

  1. 获取 PHP 安装包

通过wget方式进行下载PHP 7.2.2版本后解压,并进行编译安装

wget http://hk1.php.net/get/php-7.2.2.tar.gz/from/this/mirror

tar -zxvf mirror

cd php-7.2.2/

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

make && make install

ln -s /home/soft/php/bin/php /usr/bin/php //创建链接

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

php -v

3-2 PHP编译安装

3-3 PHP安装成功

  1. 配置 DM 驱动

php.ini 中添加如下内容,按照实际情况适当修改以下参数(运行检验前需要配置达梦数据库环境变量.bash_profile参数):

[PHP_DM]

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

extension=libphp72_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

3-4验证驱动模块加载成功

  1. PHP与数据库连接

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

mkdir /home/soft/php/bin/php/phptest

cd /home/soft/php/bin/php/phptest

vi 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/>";

}

?>

3-5 PHP与数据库连接成功

  1. 使用PHP对数据库增删改查

PHP 接口增、删、改、查四个基本操作,示例程序 php_dml.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";

//清空表,初始化测试环境

$result = dm_exec($link, 'delete from PRODUCTION.PRODUCT_CATEGORY') or die("Query failed : " . dm_error()."\n");

 

 

//插入数据

$result = dm_exec($link, "insert into PRODUCTION.PRODUCT_CATEGORY(NAME) values('技术部'), ('人事部'), ('销售部'), ('财务部')")

or die("Query failed : " . dm_error()."\n");

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

 

//删除数据

$result = dm_exec($link, "delete from PRODUCTION.PRODUCT_CATEGORY where name='人事部'") or die("Query failed : " . dm_error()."\n");

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

 

//更新数据

$result = dm_exec($link, 'update PRODUCTION.PRODUCT_CATEGORY set name = \'DM技术部\' where name=\'技术部\'') or die("Query failed : " . dm_error()."\n");

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

 

//查询数据

$result = dm_exec($link, "select * from PRODUCTION.PRODUCT_CATEGORY") 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/>";

}

?>

 

3-6增删改查执行成功

  1. PHP 接口绑定变量

PHP 接口绑定变量示例程序 php_bind.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";

 

//清空表,初始化测试环境

$result = dm_exec($link, 'delete from PRODUCTION.PRODUCT_CATEGORY') or die("Query failed : " . dm_error()."\n");

 

//绑定参数方式插入数据

$a = '人事部';

$stmt = dm_prepare($link, 'insert into PRODUCTION.PRODUCT_CATEGORY(name) values(?)');

$result = dm_execute($stmt, array($a)) or die("Query failed : " . dm_error()."\n"); ;

print "php: insert with bind successfully"."\n";

 

//查询数据

$result = dm_exec($link, "select * from PRODUCTION.PRODUCT_CATEGORY") 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";

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

 

/*断开连接*/

dm_close($link);

}

catch(Exception $e)

{

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

}

?>

3-7 接口绑定变量

 

 

 

技术社区地址:https://eco.dameng.com

posted @   zzzzz887  阅读(249)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示