1.php环境安装
操作系统版本:CentOS Linux release 7.6.1810 (Core)
数据库版本:DM Database Server 64 V8
php版本:php-7.4.22
官网下载php源码包,并将其上传到/root目录
https://www.php.net/downloads.php
解压
[root@dca ~]#tar -zxvf php-7.4.22.tar.gz |
编译:
[root@dca ~]# cd /root/php-7.4.22/ [root@dca php-7.4.22]# ./configure |
如果编译过程中,有如下报错
No package 'libxml-2.0' found No package 'sqlite3' found |
需要安装如下包:
[root@dca php-7.4.22]# yum -y install libxml2 [root@dca php-7.4.22]#yum -y install libxml2-devel [root@dca php-7.4.22]#yum install sqlite-devel -y |
再次编译成功
[root@dca php-7.4.22]# ./configure |
安装
[root@dca php-7.4.22]# make |
[root@dca php-7.4.22]# make install |
查看php版本
[root@dca php-7.4.22]# php -v PHP 7.4.22 (cli) (built: Aug 16 2021 17:52:12) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies |
修改配置文件
将安装包下的php.ini-production拷贝到/usr/local/lib下并改名为php.ini
[root@dca lib]# cp /root/php-7.4.22/php.ini-production /usr/local/lib/php.ini |
可以用如下命令查看配置文件路径
[root@dca php_pdo]# php --ini open fail! path:./libcrypto.so Configuration File (php.ini) Path: /usr/local/lib Loaded Configuration File: /usr/local/lib/php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none) |
也可以在编译的时候,加上--with-config-file-path参数指定配置文件路径。
2.配置DM驱动
将如下内容,添加到php.ini文件末尾,extension_dir是驱动所在路径,extension注意填写php对应的版本。目前DM8最高支持php7.4版本。
[PHP_DM] extension_dir ="/dm/dmdbms/drivers/php_pdo" extension=libphp74_dm.so [dm] dm.port=5236 ; 是否允许持久性连接 dm.allow_persistent = 1 ; 允许建立持久性连接的最大数. -1 为没有限制. dm.max_persistent = -1 ; 允许建立连接的最大数(包括持久性连接). -1 为没有限制. dm.max_links = -1 ; 默认的主机地址 dm.default_host = localhost ; 默认登录的数据库 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 |
DM PHP 驱动模块加载成功,如下所示
[root@dca lib]# php -m | grep DM DM |
3.数据库连接验证
创建php_conn.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"; /*断开连接*/ dm_close($link); } catch(Exception $e) { $e->getMessage() . "<br/>"; } ?> |
执行验证,如下表示连接成功。
[root@dca php_demo]# php php_conn.php open fail! path:./libcrypto.so php: Connected successfully |
4.开发示例
PHP 接口增、删、改、查四个基本操作。
创建dm_php_demo.php,代码如下:
<?php /* 连接选择数据库 */ $link = dm_connect("127.0.0.1", "SYSDBA", "SYSDBA") or die("连接数据库失败 : " . dm_error()); #print "连接数据库成功\n"; //插入 fun_insert($link); fun_select($link); //修改 fun_update($link); fun_select($link); //删除 fun_delete($link); fun_select($link); function fun_insert($link) { /* 插入 */ $query = " INSERT INTO product(name,author,publisher,publishtime,productno,satetystocklevel,originalprice,nowprice,discount,descrip ...skipping... <?php /* 连接选择数据库 */ $link = dm_connect("127.0.0.1", "SYSDBA", "SYSDBA") or die("连接数据库失败 : " . dm_error()); #print "连接数据库成功\n"; //插入 fun_insert($link); fun_select($link); //修改 fun_update($link); fun_select($link); //删除 fun_delete($link); fun_select($link); function fun_insert($link) { /* 插入 */ $query = " INSERT INTO product(name,author,publisher,publishtime,productno,satetystocklevel,originalprice,nowprice,discount,descrip tion,photo,sellstarttime) VALUES('三国演义','罗贯中','中华书局','2005-04-01','9787101046121','10','19.0000','15.2000','8.0','《三国演义》是中国第 一部长篇章回体小说!',null,'2006-03-20')"; $result = dm_exec($link, $query) or die("插入数据失败 : " . dm_error()); print "插入成功\n"; /* 释放资源 */ dm_free_result($result); } function fun_update($link) { $query = " UPDATE product SET NAME = '三国' WHERE NAME = '三国演义'"; $result = dm_exec($link, $query) or die("修改数据失败 : " . dm_error()); print "修改成功\n"; /* 释放资源 */ dm_free_result($result); } function fun_delete($link) { $query = " DELETE FROM product WHERE NAME = '三国'"; $result = dm_exec($link, $query) or die("删除数据失败 : " . dm_error()); print "删除成功\n"; /* 释放资源 */ dm_free_result($result); } function fun_select($link) { /* 查询 */ $query = " select name,author,publisher from product"; $result = dm_exec($link, $query) or die("查询数据失败 : " . dm_error()); print "查询结果:\n"; while ($line = dm_fetch_array($result)) { foreach ($line as $col_value) { print "$col_value\t"; } print "\n"; } print "\n"; /* 释放资源 */ dm_free_result($result); } /* 断开连接 */ dm_close($link); ?> |
执行验证:
[root@dca php_demo]# php dm_php_demo.php |
更多资讯请上达梦技术社区了解:https://eco.dameng.com