文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-08 07:33

关注

一、下载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.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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯