一、下载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.dll
和php73_dm.dll
(注意查看
phpinfo
,如果Thread Safet
为enabled
,则选择该文件,否则选择pdo73nts_dm.dll
)
2. 编译/修改php.ini文件
- php安装包解压以后,默认是没有php.ini文件。( 将php.ini-development重命名为php.ini文件)
- 在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.dlldmcalc.dlldmelog.dlldmmem.dlldmos.dlldmcomm.dlldmcpr.dlldmcyt.dlldmstrt.dlldmclientlex.dlldmdta.dlldmcfg.dlldmdcr.dlldmmout.dlldmcvt.dlldmmsg.dll
如果还不行就尝试把bin所有的dll文件拷贝过去。
4.检查驱动
./php.exe -m
三、测试连接
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() . "
";}?>
将测试的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 " 查询结果:"
;while ($line = dm_fetch_array($result)){ print_r($line); echo '
';}
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的分享
来源地址:https://blog.csdn.net/qq_35349982/article/details/126950616