PHP连接达梦数据库
生活随笔
收集整理的這篇文章主要介紹了
PHP连接达梦数据库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PHP連接達夢數據庫
背景
PDO(PHP Data Objects)是一種在PHP里連接數據庫的使用接口。
PHP 數據對象(PDO) 擴展為PHP訪問數據庫定義了一個輕量級的一致接口。實現 PDO 接口的每個數據庫驅動可以公開具體數據庫的特性作為標準擴展功能。 注意利用 PDO 擴展自身并不能實現任何數據庫功能;必須使用一個具體數據庫的 PDO 驅動來訪問數據庫服務。
| DM數據庫 | DM8 |
| PHP | 7.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 Technologies3. 修改用戶的環境變量
[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_profile4. 修改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 DM5. 代碼測試
1. 測試數據庫連接
##編寫php_conn.php文件 [root@VM-24-17-centos ~]# cat php_conn.php <?phpheader("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 successfully2.CRUD操作
## 1. 編寫php_dml.php 文件 [root@VM-24-17-centos ~]# cat php_dml.php <?phpheader("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.php3. 測試數據庫循環寫入
## 1. 編寫php_demo.php 文件 [root@VM-24-17-centos ~]# cat php_demo.php <?phpheader("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-devel2. configure: error: Package requirements (sqlite3 > 3.7.4) were not met:
yum install sqlite-devel資料
鏈接:https://pan.baidu.com/s/14qT4FlSHsO7Z4qbN_25RRw
提取碼:7uym
–來自百度網盤超級會員V3的分享
總結
以上是生活随笔為你收集整理的PHP连接达梦数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DM8 jdbc调用存储过程传参list
- 下一篇: Hibernate框架整合DM数据库