达梦数据库安装
可访问达梦云适配中心下载试用,下载 DM8 数据库试用版并安装,安装步骤请参考数据库环境准备。

php配置达梦数据库(windows系统)

修改php.ini文件
extension="D:\dmdbms\drivers\php_pdo\pdo73_dm.dll"
extension="D:\dmdbms\drivers\php_pdo\php73_dm.dll"

将dmdbms\drivers\dpi下的所有.dll文件拷贝到C盘中

测试代码
<?php
try {
// 1. PDO连接字符串 - 达梦数据库专用格式
$dsn = "dm:host=localhost;port=5236;dbname=DMHR;charset=utf8";
// 2. 创建PDO实例(用户名,密码)
$username = "SYSDBA";
$password = "Qwe123456";
$pdo = new PDO($dsn, $username, $password);
// 3. 设置错误模式为异常模式,便于调试
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "连接成功!<br>";
} catch (PDOException $e) {
// 详细的错误处理
echo "连接失败:".$e->getMessage()."<br>";
echo "错误代码:".$e->getCode()."<br>";
// 如果需要更详细的错误信息
if ($pdo) {
echo "<pre>";
print_r($pdo->errorInfo());
echo "</pre>";
}
} catch (Exception $e) {
echo "其他错误:".$e->getMessage()."<br>";
}
?>
报错连接失败:SQLSTATE[HY000] dpi_login: -70089 ����ģ�����ʧ�� 错误代码:-70089
原因是:PHP在运行时找不到达梦数据库依赖的加密库文件(如 libcrypto.so/.dll 或 libdmcrypto.so/.dll)。系统已经知道有达梦这个扩展,但在启动它时,找不到它需要的“零件”(加密库)
解决方案:在达梦的D:\dmdbms\bin文件夹中找到libeay32.dll, ssleay32.dll,将这些文件粘贴到php目录或系统目录中
方案一(推荐):将这些 .dll 文件复制到你 PHP 安装目录的根目录下(即 php.exe 所在的文件夹)。
方案二(推荐):将它们复制到 C:\Windows\System32 目录下
方案三:将达梦的 bin 目录(如 D:\dmdbms\bin)添加到系统的 PATH 环境变量中,然后重启电脑
备选方案:关闭数据库加密(这种方法会降低数据库通信的安全性,仅建议在开发和测试环境中临时使用。)
找到达梦数据库安装目录下的 dm.ini 文件,找到参数 ENABLE_ENCRYPT,将其值从 1 改为 0
ENABLE_ENCRYPT = 0
执行查询、新增、修改、删除sql时报错:SQLSTATE[HY000]: General error: -2106 ��1 �и������ִ���: ��Ч�ı�����ͼ��[STUDEN] (dpi_prepare[-2106] at dm_driver.c:500)错误代码:HY000
// 方案一:$pdo->exec("SET SCHEMA DMHR");
// 方案二:加上具体的模式名DMHR.STUDEN
$sql = "INSERT INTO DMHR.STUDEN (STUDEN_NAME, STUDEN_IDNO, STUDEN_PHOTO) VALUES (:name, :idno, :photo)";
$stmt = $pdo->prepare($sql);
// 绑定参数并执行
$i_res = $stmt->execute([
':name' => '张三',
':idno' => '123465789',
':photo' => ''
]);
if($i_res){
echo "数据插入成功!新插入记录的ID是: " . $pdo->lastInsertId();
}else{
echo "数据插入失败!";
}
新增写入后的数据中文乱码

查询当前数据库的字符集
SELECT SF_GET_UNICODE_FLAG() AS UNICODE_FLAG;

解决方案:
在 PHP 所在的机器上配置 dm_svc.conf 文件
如果你的 PHP 是 32位 且安装在 64位 Windows 上:C:\Windows\SysWOW64
如果是 64位 PHP 或不确定:C:\Windows\System32
创建或编辑dm_svc.conf
# 在文件开头添加以下内容
CHAR_CODE=(PG_UTF8)
TIME_ZONE=(480)
LANGUAGE=(cn)
# 如果有具体的服务名配置,可以添加
[DMHR]
CHAR_CODE=(PG_UTF8)
重启apache或 PHP-FPM
110

被折叠的 条评论
为什么被折叠?



