gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

詳解php7如何連接使用dm數據庫(圖文)

前言


公司要搞國產化開發,數據庫選用達夢數據庫,達夢版本為dm8,php版本為7.2,前期在Windows進行開發

數據庫從mysql遷移到達夢數據庫里面,遷移方法和php的擴展安裝方法就不講了,這方面網上的資料還蠻多。

不過php連接達夢數據庫之后的使用操作的資料就比較少了,客服的技術大家都懂的,資料全靠翻文檔,簡單給大家提供一下我踩過的坑,方法都是直接操作數據庫,后續根據大家自己的喜好去封裝去吧。

簡單說明一下達夢的資料目錄,在達夢的安裝目錄下面的《doc》里面主要是各種使用文檔,《drivers》里面是各種語言的擴展,php的so擴展就是從這里面取的,我這里主要使用的是php_dm的擴展,pdo_dm的資料太少了我就沒怎么研究。

詳解php7如何連接使用dm數據庫(圖文)

詳解php7如何連接使用dm數據庫(圖文)

實例化數據庫的時候有兩點需要提醒各位的,字符集和字符串大小寫敏感記得提前設置好,不要給自己挖坑。

本人經歷就是mysql遷移過來的數據表名和字段名都是小寫,結果在后面使用的時候各種坑,后來發現大小寫敏感去掉就可以了。

詳解php7如何連接使用dm數據庫(圖文)

這里就用官方的示例庫里面的CITY這張表演示php7.2各種使用方法吧。

詳解php7如何連接使用dm數據庫(圖文)

詳解php7如何連接使用dm數據庫(圖文)

查詢


廢話不多說,先上代碼

//連接數據庫 $link = dm_connect("localhost", "SYSDBA", "SYSDBA"); if(!$link){     var_dump(@dm_error());     var_dump(iconv("GBK","UTF-8",@dm_errormsg())); } dm_setoption($link,1,12345,1);//設置 dm 連接和語句的相關屬性,設置UTF8  $query = "select * from DMHR.CITY"; $result = dm_exec($link,$query);  print " 查詢結果:</br>"; while ($line = dm_fetch_array($result)){     print_r($line);     echo '<br>'; }  /* 釋放資源 */ dm_free_result($result);  /* 斷開連接 */ dm_close($link);

達夢的php官方擴展php5和php7的使用方法區別很大,php5里面很多方法在php7里面用不了,部分方法在php7里面用其他方法替代了,網上的資料大部分都是php5的,在php7里面完全用不了。

查詢語句出來的中文亂碼的問題就是一個天坑,查了半天文檔才試出來的這種方法,有其他更優雅的方法也歡迎教一下我,大家互相學習。

插入


//連接數據庫 $link = dm_connect("localhost", "SYSDBA", "SYSDBA"); if(!$link){     var_dump(@dm_error());     var_dump(iconv("GBK","UTF-8",@dm_errormsg())); } dm_setoption($link,1,12345,1);//設置 dm 連接和語句的相關屬性,設置UTF8  $query = "INSERT INTO DMHR.CITY (CITY_ID,CITY_NAME,REGION_ID) VALUES ('JL','吉林','1')"; $result = dm_exec($link,$query);  if($result){     echo "插入成功";     //曲線查詢插入id     /*$query = "SELECT @@IDENTITY as insert_id";     $result = dm_exec($link,$query);     $line = dm_fetch_array($result);     echo ',ID:';     print_r($line);*/ }  /* 釋放資源 */ dm_free_result($result);  /* 斷開連接 */ dm_close($link);

官方提供的dm_insert_id()這個函數貌似只用php5能用,php7沒有這個函數,只能通過曲線查詢自增的id值,當然演示的這張表沒有自增ID,同時SELECT @@IDENTITY as insert_id 這句是必定查詢成功的,就算插入失敗也會返回更前一次插入成功的自增ID,千萬不要用自增ID判斷語句是否插入成功

更新


//連接數據庫 $link = dm_connect("localhost", "SYSDBA", "SYSDBA"); if(!$link){     var_dump(@dm_error());     var_dump(iconv("GBK","UTF-8",@dm_errormsg())); } dm_setoption($link,1,12345,1);//設置 dm 連接和語句的相關屬性,設置UTF8  $query = "UPDATE  DMHR.CITY SET REGION_ID='2' WHERE CITY_ID='JL'"; $result = dm_exec($link,$query);  if($result){     echo "更新成功"; }  /* 釋放資源 */ dm_free_result($result);  /* 斷開連接 */ dm_close($link);

更新就很簡單了

刪除


//連接數據庫 $link = dm_connect("localhost", "SYSDBA", "SYSDBA"); if(!$link){     var_dump(@dm_error());     var_dump(iconv("GBK","UTF-8",@dm_errormsg())); } dm_setoption($link,1,12345,1);//設置 dm 連接和語句的相關屬性,設置UTF8  $query = "DELETE FROM DMHR.CITY WHERE (CITY_ID='JL')"; $result = dm_exec($link,$query);  if($result){     echo "刪除成功"; }  /* 釋放資源 */ dm_free_result($result);  /* 斷開連接 */ dm_close($link);

刪除也很簡單,沒什么特別注意的地方

事務


根據官方文檔介紹:“DM 沒有提供顯式定義事務開始的語句,第一個可執行的 SQL 語句(除登錄語句外)隱含事務的開始”,這是沒有定義事務開始方法的原因,不過當我們要從某一段程序開始事務的時候,可以使用dm_autocommit()函數將事務的自動提交關閉,在程序結束之后在將自動提交打開

//連接數據庫 $link = dm_connect("localhost", "SYSDBA", "SYSDBA"); if(!$link){     var_dump(@dm_error());     var_dump(iconv("GBK","UTF-8",@dm_errormsg())); } dm_setoption($link,1,12345,1);//設置 dm 連接和語句的相關屬性,設置UTF8  $query = "INSERT INTO DMHR.CITY (CITY_ID,CITY_NAME,REGION_ID) VALUES ('JL','吉林','1')"; $result = dm_exec($link,$query);  if($result){     echo "插入成功。"; }  $result = dm_autocommit($link,false);//事務自動提交關閉 $query = "UPDATE  DMHR.CITY SET CITY_NAME='遼寧' WHERE (CITY_ID='SY')"; $result = dm_exec($link,$query); if($result){     echo "更新成功,回滾。"; }   dm_rollback($link);//回滾 //dm_commit($link);//提交  $result = dm_autocommit($link,true);//開啟事務自動提交,結束事務  /* 斷開連接 */ dm_close($link);

踩過的坑


一、在達夢數據庫中獲取時間戳格式的時間
select DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE());

二、如果之前使用的數據庫是mysql,時間格式 DATETIME 和 TIMESTAMP 這兩種類型后面的標度要注意一下,如果不是0的話時間精度會更長
詳解php7如何連接使用dm數據庫(圖文)

三、有些字段查詢出來的話會變成大寫,比如“count”
詳解php7如何連接使用dm數據庫(圖文)

解決方法:將字段用雙引號引上例:
select count(1) as "count" from "DMHR"."CITY";

四、group by語句的使用很嚴格(或者說mysql的group by過于放松),select中除聚合函數之外出現的所有字段必須要在group by里面。

比方舉一個錯誤的例子:

select EMPLOYEE_NAME,JOB_ID from "DMHR"."EMPLOYEE" group by JOB_ID;
EMPLOYEE_NAME和字段沒在group by 中,執行必定失敗
提供一種解決思路:

select * from "DMHR"."EMPLOYEE" where EMPLOYEE_ID in (select min(EMPLOYEE_ID) as minid from "DMHR"."EMPLOYEE" group by JOB_ID)

同樣select中如果有聚合函數之外的字段,需要加入group by。錯誤的例子:

select min(EMPLOYEE_ID),EMPLOYEE_NAME,JOB_ID from "DMHR"."EMPLOYEE";
select中有min()函數外還有其他字段,執行必定失敗。
如果一定要在其他很多字段里面加入聚合函數,提供一種思路:

select t1.EMPLOYEE_NAME,t1.JOB_ID,t2.minid from "DMHR"."EMPLOYEE" t1 left join ( select min(EMPLOYEE_ID) as minid,JOB_ID from "DMHR"."EMPLOYEE" group by JOB_ID ) t2 on t2.JOB_ID=t1.JOB_ID where t1.EMPLOYEE_ID in (select min(EMPLOYEE_ID) as minid from "DMHR"."EMPLOYEE" group by JOB_ID);

結語


目前踩過的坑就這些了,希望能夠幫助到大家。
對于其他問題還是要多翻閱官方文檔了。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
午夜视频在线观| 免费男同深夜夜行网站| 日本成年人网址| 青少年xxxxx性开放hg| 91九色在线观看视频| 国产精品av免费| 亚洲人视频在线| avav在线看| 久久精品视频16| 国产黄色激情视频| www亚洲国产| 手机免费av片| 三级av免费观看| 黄色成人免费看| 国产99久久九九精品无码| 大西瓜av在线| 免费一级特黄特色毛片久久看| 日本久久久久久久久久久久| 久久精品免费一区二区| 国产日韩av网站| 91.com在线| 国产一级爱c视频| 人人干视频在线| 国产素人在线观看| 亚欧无线一线二线三线区别| 免费 成 人 黄 色| 国产v亚洲v天堂无码久久久| 国产精品后入内射日本在线观看| 男女超爽视频免费播放| 欧美 日韩 激情| 99视频精品免费| 久久国产激情视频| 欧美少妇一级片| 人妻av中文系列| 午夜欧美福利视频| 最新天堂在线视频| 国产精品一二三在线观看| 国产乱子伦精品视频| 免费无码毛片一区二三区| 国产精品丝袜久久久久久消防器材| 无码aⅴ精品一区二区三区浪潮| 999精品网站| 91精品国产三级| 亚洲国产精品成人天堂| 久久久久免费精品| www.久久久久久久久久久| 欧美在线观看黄| 欧美 日韩精品| 伊人精品视频在线观看| 黄色成人在线看| 中国黄色片免费看| 日本a级片在线播放| 91av在线免费播放| 少妇高潮大叫好爽喷水| aaaaaa亚洲| 好吊色视频988gao在线观看| 男女曰b免费视频| 今天免费高清在线观看国语| 国产第一页视频| 9191国产视频| 午夜剧场在线免费观看| 91动漫在线看| 四虎影院一区二区| 国产精品视频黄色| aa在线观看视频| 中国 免费 av| www.久久av.com| 18岁网站在线观看| 欧美性受xxxx黑人猛交88| 爆乳熟妇一区二区三区霸乳| www.xxx麻豆| 法国空姐在线观看免费| 天天天干夜夜夜操| 欧美精品99久久| 97超碰在线人人| 欧美做暖暖视频| 肉色超薄丝袜脚交| 国产无色aaa| 国产91色在线观看| 天天爱天天操天天干| 日本www在线视频| 水蜜桃色314在线观看| 成人在线视频一区二区三区| 懂色av一区二区三区四区五区| 污色网站在线观看| 91最新在线观看| 色七七在线观看| 国产成人久久777777| 91国视频在线| 激情婷婷综合网| 国产性生交xxxxx免费| 美女福利视频在线| 草草草在线视频| 91国产精品视频在线观看| 国产日韩成人内射视频| 免费日韩中文字幕| 性欧美极品xxxx欧美一区二区| 欧美激情精品久久久久久小说| 欧美视频免费播放| 五月婷婷丁香色| 国内av一区二区| ijzzijzzij亚洲大全| 久久精品在线免费视频| 亚洲理论电影在线观看| 东北少妇不带套对白| 91免费视频网站在线观看| 久久久精品在线视频| 在线观看的毛片| 亚洲最新免费视频| 国产精品一色哟哟| 37pao成人国产永久免费视频| 天天爱天天操天天干| 在线a免费观看| 91黄色在线看| 久久精品99国产| 色一情一区二区三区| mm131午夜| 国产91对白刺激露脸在线观看| 欧美日韩亚洲自拍| 特级西西人体www高清大胆| 日本xxxxxxxxxx75| 在线观看的毛片| www.激情网| 久久综合伊人77777麻豆最新章节| 最新av免费在线观看| 2019日韩中文字幕mv| 丁香婷婷激情网| 996这里只有精品| www.xxx亚洲| 精品一区二区成人免费视频| 欧美一区二区中文字幕| 波多野结衣网页| 国产无套内射久久久国产| 红桃视频一区二区三区免费| 国产高清精品在线观看| 男女激烈动态图| 日韩肉感妇bbwbbwbbw| 日韩黄色短视频| 亚洲在线观看网站| 看欧美ab黄色大片视频免费| 久久久久久久久久伊人| 婷婷六月天在线| 久久国产成人精品国产成人亚洲| 99re99热| 亚洲午夜精品一区| 欧洲熟妇精品视频| 午夜免费福利小电影| 欧美 亚洲 视频| 日本特黄在线观看| 久久婷婷综合色| 国产主播中文字幕| 妞干网在线免费视频| 成人免费观看cn| 欧美亚洲色图视频| 成人短视频在线观看免费| 毛片毛片毛片毛片毛| 青青青在线视频免费观看| 日韩视频免费播放| 国产91在线亚洲| av 日韩 人妻 黑人 综合 无码| 成人不卡免费视频| 国产欧美精品一二三| 天堂网在线免费观看| 国产精品一区二区小说| 欧美日韩在线免费播放| 欧美两根一起进3p做受视频| 成人精品视频一区二区| 黄色高清无遮挡| 五月婷婷丁香色| 亚洲第一成肉网| 污视频在线观看免费网站| 日韩欧美中文在线视频| 911av视频| 国产精品无码免费专区午夜| 日韩一级免费看| 国产美女无遮挡网站| 国产精品无码av无码| 天天干天天玩天天操| 欧美国产在线一区| 一二三在线视频| 久色视频在线播放| 成人三级视频在线播放| 在线观看的毛片| 亚洲成人动漫在线| 男人用嘴添女人下身免费视频| 国内外成人激情视频| 中文av一区二区三区| 国产精品8888| 久久午夜夜伦鲁鲁一区二区| 中文字幕丰满乱码| 青青青青在线视频| 黄色片视频在线播放| 天堂av8在线| 亚洲精品无码国产| 一区二区三区视频网| 丰满女人性猛交| 欧美激情精品久久久久久小说| 欧美性视频在线播放| 精品视频免费在线播放| 亚洲第一成肉网|