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相同

相关推荐
千里马学框架5 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台5 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone5 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc5 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo5 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077005 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼5 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone5 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen5 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone5 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui