PHP连接达梦数据库

PDO是一种在PHP中连接数据库的接口,可以通过PDO接口使用PHP连接达梦数据库。

1、安装PHP环境

检查当前环境是否安装PHP

root@localhost \~# php -v

当前环境并未安装PHP,需要进行安装,选择安装PHP7.3版本。

2、安装 epel-release源和源管理工具yum-utils

root@localhost \~# yum -y install epel-release yum-utils

安装如下源

完成安装...

3、安装Remi软件源

当前操作系统为centos 7,可以执行如下语句进行安装:

root@localhost \~# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

完成安装...

4、安装PHP7.3的其他依赖包

root@localhost \~# yum install -y php73-php-fpm php73-php-cli php73-php-bcmath php73-php-gd php73-php-json php73-php-mbstring php73-php-mcrypt php73-php-mysqlnd php73-php-opcache php73-php-pdo php73-php-pecl-crypto php73-php-pecl-mcrypt php73-php-pecl-geoip php73-php-recode php73-php-snmp php73-php-soap php73-php-xml

5、查看PHP73版本

6、启动服务,开机自启,查看状态

root@localhost \~# systemctl enable php73-php-fpm

root@localhost \~# systemctl status php73-php-fpm

root@localhost \~# systemctl start php73-php-fpm

如下:

7、给PHP添加达梦的驱动

达梦的php驱动路径在$DM_HOME/driver/php_pdo下(此处达梦数据库安装目录为/home/dmdba/DM_soft/DM_db)

PHP的驱动路径如下,将达梦的php驱动拷贝到该目录下:

拷贝驱动文件:

查看PHP驱动目录:

8、找到php.ini和pdo.ini配置文件

如果没有php.ini文件,可以使用该命令生成:

root@localhost \~# php73 -r "phpinfo();" | grep 'php.ini'

9、修改配置文件

root@localhost \~# vi /etc/opt/remi/php73/php.ini

在最后一行添加extension=libphp73_dm.so

root@localhost \~# vi /etc/opt/remi/php73/php.d/20-pdo.ini

在最后一行添加extension=php73_pdo_dm.so

root@localhost \~# vi /etc/profile

编辑系统配置文件,在最后一行添加

root@localhost \~# source /etc/profile

使改动生效

如上图所示,达梦驱动加载正常

10、PHP连接达梦数据库测试

root@localhost workspace# cat test.php

复制代码
<?php
try{
if($pdo =new PDO("dm:host=192.168.18.6","SYSDBA","SYSDBA"))
echo "connec tsuccess!";
}
catch(PDOException $e){
print "Error: ". $e->getMessage()."<br/>";
   die();
}
?>

复制

运行PHP文件,查看执行结果

root@localhost workspace# php73 test.php

connec tsuccess!

使用php查询数据:

复制代码
<?php
try{
if($pdo =new PDO("dm:host=192.168.18.6","SYSDBA","SYSDBA"))
echo "connec tsuccess!";
//show value
$sql="select * from test";
$stmt=$pdo->query($sql);
var_dump($stmt->fetchAll(2));
}
catch(PDOException $e){
print "Error: ". $e->getMessage()."<br/>";
   die();
}
?>

复制

执行结果如下:

输入参数查询数据:

复制代码
<?php
try{
if($pdo =new PDO("dm:host=192.168.18.6","SYSDBA","SYSDBA"))
echo "connec tsuccess!\n";
//show value
$name="aaa";
$id=1;
$sql="select * from test where name=:name and id=:id";
$stmt=$pdo->prepare($sql);
$stmt->execute(array('name'=>$name,'id'=>$id));
var_dump($stmt->fetchAll(2));
}
catch(PDOException $e){
print "Error: ". $e->getMessage()."<br/>";
   die();
}
?>

复制

执行结果如下:

查询并插入数据样例:

复制代码
<?php
try{
$pdo =new PDO("dm:host=192.168.18.6","SYSDBA","SYSDBA");
if(!($pdo->connect_error)){
echo "connect success!\n";
}
//show value
$name="aaa";
$id=1;
$sql="select * from test where name=:name and id=:id";
$stmt=$pdo->prepare($sql);
$stmt->execute(array('name'=>$name,'id'=>$id));
var_dump($stmt->fetchAll(2));
//insert
$sql2="insert into test values('3','ccc')";
if($pdo->query($sql2)){
  echo "insert success! \n";
}else{
  echo "insert wrong" . $pdo->error;
}
//close session
$pdo=null;
$stmt=null;
}
catch(PDOException $e){
print "Error: ". $e->getMessage()."<br/>";
   die();
}
?>

复制

修改和删除数据样例:

复制代码
<?php
try{
$pdo =new PDO("dm:host=192.168.18.6","SYSDBA","SYSDBA");
if(!($pdo->connect_error)){
echo "connect success!\n";
}
//update
$name="aaa";
$id=1;
$sql="update test set name='user1' where name=:name and id=:id";
$stmt=$pdo->prepare($sql);
$stmt->execute(array('name'=>$name,'id'=>$id));
//delete
$sql2="delete from test where id=3";
if($pdo->query($sql2)){
  echo "delete success! \n";
}else{
  echo "delete wrong" . $pdo->error;
}
//close session
$pdo=null;
$stmt=null;
}
catch(PDOException $e){
print "Error: ". $e->getMessage()."<br/>";
   die();
}
?>

复制

可以使用pdo-\>query和pdo->prepare两种方式来执行SQL,这两种函数执行的逻辑与jdbc中的executeQuery和preparedstatment相同

相关推荐
Peter(阿斯拉)44 分钟前
[Android]_[中级]_[如何创建MVVM架构原型]
android·java·架构·mvvm·viewmodel
kingbal1 小时前
Flutter:Flutter SDK版本管理工具FVM
android·flutter·ios·android-studio·window
天天开发1 小时前
Flutter状态管理新宠:RiverPod全面解析与实战指南
android·flutter
ltlovezh17 小时前
ROI 编码学习指南:Android 与 FFmpeg 的真实实现边界
android·ffmpeg·音视频开发
心前阳光18 小时前
Unity之2021.3.45f2c1发布安卓程序遇到的问题
android·unity·游戏引擎
utf8mb4安全女神19 小时前
MySQL5.7升级到MySQL8.0并进行数据迁移
android
黄林晴19 小时前
Android XR DP4 重磅发布:手机 App 直投眼镜,Compose 原生玩转 3D 内容
android·google io
炼川淬海DB21 小时前
数据库开发规范
android·adb·数据库开发
2501_9159184121 小时前
iOS App性能测试工具的实现方法与优化循环指南
android·ios·小程序·https·uni-app·iphone·webview
天天爱吃肉82181 天前
豆包 vs DeepSeek API 对比分析报告
android·java·大数据·开发语言·功能测试·嵌入式硬件·汽车