PHP连接达梦数据库DM8(Window)

一、下载php版本

1. php7.3版本

https://windows.php.net/downloads/releases/archives/
在这里插入图片描述

2. php7.4版本(可选)

https://windows.php.net/download/
在这里插入图片描述

二、配置PHP(PDO接口)

1. 找到dm路径驱动

在达梦的安装包目录下找到pdo73_dm.dllphp73_dm.dll

(注意查看phpinfo,如果Thread Safetenabled,则选择该文件,否则选择pdo73nts_dm.dll

在这里插入图片描述

2. 编译/修改php.ini文件

  1. php安装包解压以后,默认是没有php.ini文件。( 将php.ini-development重命名为php.ini文件)

在这里插入图片描述

  1. 在php.ini的945行左右添加内容两行:

在这里插入图片描述

;替换为自己驱动包的绝对路径
extension="D:\dmdbms\drivers\php_pdo\pdo73_dm.dll"
extension="D:\dmdbms\drivers\php_pdo\php73_dm.dll"

3. 添加达梦的依赖库

打开cmd命令行,输入php -m,如果提示PHP Fatal error: Unable to start DM module in Unknown on line 0错误
在这里插入图片描述

尝试将数据库安装目录bin下的以下dll文件拷贝至C:\Windows\SysWOW64和C:\Windows\System32。(替换时会提示是否替换原有文件,这里选择‘否’)

dmdpi.dll
dmcalc.dll
dmelog.dll
dmmem.dll
dmos.dll
dmcomm.dll
dmcpr.dll
dmcyt.dll
dmstrt.dll
dmclientlex.dll
dmdta.dll
dmcfg.dll
dmdcr.dll
dmmout.dll
dmcvt.dll
dmmsg.dll

如果还不行就尝试把bin所有的dll文件拷贝过去。

4.检查驱动

./php.exe -m

在这里插入图片描述

三、测试连接

<?php
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连接

 ./php.exe D:\phpstudy_pro\demo.php

在这里插入图片描述

四、Demo案例(可选)

1. 创建表

$sql = 'create table "test"."users1"
(
	"id" INTEGER identity(1, 1) not null,
	"user_name" VARCHAR(20),
	"created_at" DATETIME(0),
	"updated_at" TIMESTAMP(0) DEFAULT sysdate,
	primary key("id")
)';
$result = dm_exec($link,$sql);

2. 插入数据

$sql = "insert into test.users1 (user_name,created_at,updated_at) values ('张三','2020-07-17 10:06:00','".date('Y-m-d H:i:s')."')";
$result = dm_exec($link,$sql);

3. 更新数据

$sql = "select * from test.users limit 10";
$result = dm_exec($link,$sql);

print " 查询结果:</br><pre>";
while ($line = dm_fetch_array($result)){
    print_r($line);
    echo '<br>';
}

4. 更新数据

$sql = "update test.users set user_name = '李四' where id = 1";
$result = dm_exec($link,$sql);

5. 删除数据

$sql = "delete from test.users where id = 1";
$result = dm_exec($link,$sql);

6. 设置默认模式

通常情况下,在sql语句中的表名前需要指定模式名。例如上面例子中的test.users,其中test就是模式名,users是表名。
可以通过SET SCHEMA设置当前模式。设置后,执行sql语句时,就可以省略模式名。
语法格式:

SET SCHEMA <模式名>;

Q&A

1. Unable to load dynamic library ‘pdo73_dm’ (tried: ***)找不到指定的模块

在这里插入图片描述

解决方案: php版本的问题,请前往php官网(https://windows.php.net/download/)下载

2. PHP Fatal error: Unable to start DM module in Unknown on line 0

解决方案:运行缺少达梦的动态加载库,参考文章的2.3添加lib的方法

3. PHP Warning: PHP Startup: Can’t load module ‘ext\php74_dm.dll’ as it’s linked with 14.28, but the core is linked with 14.16 in Unknown on line 0

在这里插入图片描述

原因分析:php7.4.28基于vc15(14.16),而我们提供的php驱动php74_dm.dll基于vs16(14.28),所以产生以上报错。
在以上硬件和操作系统环境以及相同dm8版本中,使用php8.0 windows x64 线程安全版,加载驱动php80ts_dm.dll正常。php8.0是基于vs16的。
鉴于php7.4.28是官方提供的7.4版本,因此建议提供基于vc15的php7.4.28的驱动。
解决方案:申请新的版本

资料包

链接:https://pan.baidu.com/s/164RgO6ZOx75yH0nhw_JVOw
提取码:2vkx
–来自百度网盘超级会员V4的分享

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值