Windows下使用php连接达梦数据库

本文详细介绍了如何在Windows环境下安装PHP,配置达梦数据库模块,以及安装Apache并配置PHP解析模块。同时,文章提供了测试连接和解决PHP使用PDO连接达梦数据库时可能出现的中文乱码问题的方法。
摘要由CSDN通过智能技术生成

安装PHP

下载PHP,使用ts版本

windows.php.net - /downloads/releases/archives/

目前 DM 支持的 PHP 版本为 PHP 5.2、5.3 、5.4 、5.5 、5.6 和 PHP 7.0、7.1、7.2、7.3、7.4,凝思操作系统只支持到 PHP7.2,用户可根据自己安装的 PHP 版本选择对应的接口库。

解压之后,配置达梦数据库模块

  1. 拷贝 drivers\php_pdo 目录下 php72_dm.dll 和pdo72_dm.dll到 php 目录下的 ext 目录中,修改 php.ini,添加 php.ini 中有关连接的配置;拷贝 bin 目录下依赖的库文件 dmdpi.dll 到 php 目录下的 ext 目录中。
  2. 修改php配置文件(php.ini-development重命名为php.ini)

修改extension_dir

extension_dir = "E:\Formoney\php\ext"

添加达梦数据库相关模块

extension=php72_dm.dll

extension=pdo72_dm.dll

添加默认连接

[PHP_DM]

extension_dir ="D:\dmdbms\drivers\php_pdo" 

[dm]

dm.port=5237

; 是否允许持久性连接

dm.allow_persistent = 1

; 允许建立持久性连接的最大数. -1 为没有限制.

dm.max_persistent = -1

; 允许建立连接的最大数(包括持久性连接). -1 为没有限制.

dm.max_links = -1

; 默认的主机地址

dm.default_host = 192.168.65.150

; 默认登录的数据库

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

安装Apache

apache 下载地址

https://httpd.apache.org/

页面打开后会有一段说明文字:

大致意思是说apache本身不提供已编译的安装包,只提供源码,如果你自己无法编译,可以选择下面这些官方推荐的第三方提供编译的网站。

其中后两个是有名的wamp以及xampp集成环境,如果只想下载apache可以选择前三个网站,这里我们以第一个ApacheHaus为例。

打开ApacheHaus之后你会发现这个网站上有各种windows版本,可以尽情选择你要下载的版本。

下载到本地解压之后,修改httpd.conf

修改Define SRVROOT "E:\Formoney\Apache24" 为解压的地址

修改监听端口 Listen 8080

添加以下内容:

#让Apache载入PHP处理模块,按照实际路径修改

LoadModule php7_module "E:\Formoney\php\php7apache2_4.dll"

PHPINIDir "E:\Formoney\php"

AddType application/x-httpd-php .php

DirectoryIndex default.php default.phtml default.php3 default.html default.htm

AddType application/x-httpd-php .php .phtml .php3 .inc

AddType application/x-httpd-php-source .phps

添加php解析

<IfModule dir_module>

    DirectoryIndex index.html index.php

</IfModule>

安装httpd,使用管理员启动cmd

启动httpd

httpd.exe -k start

httpd.exe -k stop

httpd.exe -k restart

编写测试文件

出现DM模块说明配置成功

连接测试文件

<?php

   header("Content-type:text/html;charset=utf-8"); //防止页面乱码

try

{

    $link = dm_connect("192.168.65.150:5237", "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 使用 PDO 连接达梦出现中文乱码

【问题描述】:

数据库初始化为 UTF8 编码,在达梦所在服务器 dm_svc.conf 配置文件设置了 utf8 编码,PDO 也设置了 UTF8 编码,但仍然在 utf8 编码下出现乱码。

【问题解决】:

通过设置应用端的 dm_svc.conf 文件,设置/添加 CHAR_CODE=(PG_UTF8)

,修改完后重启 fpm 即可。
如果应用端没有安装达梦数据库,可以从安装达梦数据库所在服务器如下目录去拷贝 dm_svc.conf 文件,或者可以在应用端自行创建 dm_svc.conf 文件放在如下目录。
安装达梦数据库所在服务器 dm_svc.conf 文件默认路径:
32 位的 DM 安装在 Win32 操作平台下,此文件位于 %SystemRoot%\system32 目录;
64 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\system32 目录;
32 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\SysWOW64 目录;
在 Linux 平台下,此文件位于/etc 目录。

基础操作示例

基础增删改查示例代码: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 = \'英语-新课标\' 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/>";

}?>

运行示例截图。运行后终端输出如下图所示:

绑定变量示例

绑定参数示例代码: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/>";

}?>f

运行示例截图。运行后终端输出如下图所示:

tpHP是一种流行的PHP框架,它可以与多种数据库进行连接和交互,包括达梦数据库。要在tpHP连接达梦数据库,需要执行以下步骤: 1. 首先,确保达梦数据库已经安装并正常运行在服务器上。你还需要知道达梦数据库的相关连接信息,比如主机名、端口号、数据库名称、用户名和密码。 2. 在tpHP项目的配置文件中,找到数据库连接相关的配置选项。在tpPHP中,这个配置文件通常是`config/database.php`。打开它并查找`'connections'`选项。 3. 在`'connections'`选项中,你会看到一些预定义的数据库连接选项,比如MySQL和SQLite。你需要在这个选项中添加一个新的连接选项来连接达梦数据库。例如,你可以添加以下代码: ```php 'dameng' => [ 'type' => 'dameng', 'hostname' => 'localhost', 'database' => 'your_database_name', 'username' => 'your_username', 'password' => 'your_password', 'hostport' => 'your_port', ] ``` 请确保将`your_database_name`替换为你的达梦数据库的名称,`your_username`和`your_password`替换为你的数据库的用户名和密码,并将`your_port`替换为数据库的端口号。 4. 保存配置文件并重新启动tpHP应用程序。 5. 现在,你可以使用达梦数据库连接选项来在tpPHP中执行数据库操作。例如,你可以使用以下代码连接达梦数据库: ```php $db = Db::connect('dameng'); ``` 这样,你就可以使用tpHP数据库操作方法来执行查询、插入、更新和删除等操作了。 总结起来,连接达梦数据库需要在tpHP项目的配置文件中添加达梦数据库连接选项,并使用该选项来连接达梦数据库。然后,你就可以使用tpHP数据库操作方法来与达梦数据库进行交互。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值