PHP连接达梦数据库

PHP连接达梦数据库

背景

PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口。

PHP 数据对象(PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。 注意利用 PDO 扩展自身并不能实现任何数据库功能;必须使用一个具体数据库的 PDO 驱动来访问数据库服务。

软件版本
DM数据库DM8
PHP7.3.33

1. 下载PHP包

https://www.php.net/downloads

本次使用的PHP安装包为:php-7.3.33.tar.bz2 (资料包中也有)

2. 编译php包

## 1. 上传压缩包上传到 /soft目录
[root@dw1 ~] cd /soft ## 上传压缩包
# 2. 解压PHP安装包
[root@dw1 soft]# tar -jxvf php-7.3.33.tar.bz2 
## 源码安装3步骤:配置(configure)、编译(make)、安装(make install)

## 进入php源码目录 php-7.3.33
[root@dw1 ~]# cd php-7.3.33/
## 可以下载yum这两个包,编译时用
[root@dw1 ~]# yum install libxml2-devel
[root@dw1 ~]# yum install sqlite-devel
## 3. 指定PHP的安装目录为:/root/php,并将php.ini的路径设置为/root/php
[root@dw1 php-7.3.33]# ./configure --prefix=/root/php/ --with-config-file-path=/root/php

## 4. 编译安装PHP(耗时较长)
[root@dw1 php-7.3.33]# make && make install

## 5. 设置软链接
[root@dw1 php-7.3.33]# ln -s /root/php/bin/php /usr/bin/php

## 6.创建php.ini(控制php行为)特别重要
[root@dw1 php-7.3.33]# cp /soft/php-7.3.33/php.ini-production /soft/php/php.ini
## 7. 检查php版本(注意PHP是NTS【非线程安全】的,不提供数据访问保护)
[root@VM-24-17-centos php]# php -v
PHP 7.3.33 (cli) (built: Jan 10 2022 22:40:40) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.33, Copyright (c) 1998-2018 Zend Technologies

3. 修改用户的环境变量

[root@iZ2zegdg3jn4k03ylt4m6rZ ~]$ vi ~/.bash_profile
## /opt/dmdbms/bin 是数据库的bin目录 如果本机没有可以不指定
## /opt/dmdbms/drivers/php_pdo PHP拓展所在的目录
##########内容如下##########
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/dmdbms/bin:/opt/dmdbms/drivers/php_pdo"
export DM_HOME="/opt/dmdbms"
##########内容如下##########
[root@iZ2zegdg3jn4k03ylt4m6rZ ~]$ source ~/.bash_profile

4. 修改php.ini

[root@iZ2zegdg3jn4k03ylt4m6rZ ~]$ cd /root/php
## 1.修改php.ini文件
[root@VM-24-17-centos php]# php -m|grep DM
#### 添加如下内容 
## 注意修改端口号 ip
## 注意
[PHP_DM]
extension_dir="/opt/dmdbms/drivers/php_pdo"
extension=libphp73_dm.so
[dm]
dm.port=5236
dm.allow_persistent = 1
dm.max_persistent = -1
dm.max_links = -1
dm.default_host = localhost
dm.default_db = dmdb
dm.default_user = SYSDBA
dm.default_user = SYSDBA
dm.connect_timeout = 10
dm.defaultlrl = 4096
dm.defaultbinmode = 1
dm.check_persistent = ON

## 2. 验证DM PHP驱动模块是否加载成功
[root@dw1 php]# php -m|grep DM
DM

请添加图片描述

5. 代码测试

1. 测试数据库连接

##编写php_conn.php文件
[root@VM-24-17-centos ~]# cat 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/>";
}
?>

## 2. 测试php
[root@VM-24-17-centos ~]# php php_conn.php 
php: Connected successfully


2.CRUD操作

## 1. 编写php_dml.php 文件
[root@VM-24-17-centos ~]# cat 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/>";
}
?>
## 2. 测试php
[root@VM-24-17-centos ~]# php php_dml.php 

3. 测试数据库循环写入

## 1. 编写php_demo.php 文件
[root@VM-24-17-centos ~]# cat php_demo.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"; 
	
	while(true) {
        print "query: select 1 from dual... ";
		
		$result = dm_exec($link, "select 1 from dual") or die("Query failed : " . dm_error()."\n"); 
		

        print "response:" . $result . "\n";
        sleep(5);
    }

    /*释放资源*/ 
    dm_free_result($result); 
    print "php: select success"."\n"; 
    /*断开连接*/ 
    dm_close($link); 
}
catch(Exception $e)
{
    $e->getMessage() . "<br/>";
}
?>

## 2. 测试php
[root@VM-24-17-centos ~]# php php_demo.php

报错

1. configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met:

请添加图片描述

解决:执行命令

yum install libxml2-devel

2. configure: error: Package requirements (sqlite3 > 3.7.4) were not met:

yum install sqlite-devel

资料

链接:https://pan.baidu.com/s/14qT4FlSHsO7Z4qbN_25RRw

提取码:7uym

–来自百度网盘超级会员V3的分享

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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数据库操作方法来与数据库进行交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值