php7怎么連接使用dm數(shù)據(jù)庫

這篇文章主要介紹“php7怎么連接使用dm數(shù)據(jù)庫”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“php7怎么連接使用dm數(shù)據(jù)庫”文章能幫助大家解決問題。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、花都網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、花都網(wǎng)絡(luò)營銷、花都企業(yè)策劃、花都品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供花都建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:bm7419.com

前言

這里主要使用的是php_dm的擴(kuò)展,pdo_dm的資料太少了我就沒怎么研究。

php7怎么連接使用dm數(shù)據(jù)庫

php7怎么連接使用dm數(shù)據(jù)庫

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

本人經(jīng)歷就是MySQL遷移過來的數(shù)據(jù)表名和字段名都是小寫,結(jié)果在后面使用的時(shí)候各種坑,后來發(fā)現(xiàn)大小寫敏感去掉就可以了。

php7怎么連接使用dm數(shù)據(jù)庫

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

php7怎么連接使用dm數(shù)據(jù)庫

php7怎么連接使用dm數(shù)據(jù)庫

查詢


廢話不多說,先上代碼

//連接數(shù)據(jù)庫
$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);//設(shè)置 dm 連接和語句的相關(guān)屬性,設(shè)置UTF8

$query = "select * from DMHR.CITY";
$result = dm_exec($link,$query);

print " 查詢結(jié)果:</br>";
while ($line = dm_fetch_array($result)){
    print_r($line);
    echo '<br>';
}

/* 釋放資源 */
dm_free_result($result);

/* 斷開連接 */
dm_close($link);

達(dá)夢的php官方擴(kuò)展php5和php7的使用方法區(qū)別很大,php5里面很多方法在php7里面用不了,部分方法在php7里面用其他方法替代了,網(wǎng)上的資料大部分都是php5的,在php7里面完全用不了。

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

插入


//連接數(shù)據(jù)庫
$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);//設(shè)置 dm 連接和語句的相關(guān)屬性,設(shè)置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()這個(gè)函數(shù)貌似只用php5能用,php7沒有這個(gè)函數(shù),只能通過曲線查詢自增的id值,當(dāng)然演示的這張表沒有自增ID,同時(shí)SELECT @@IDENTITY as insert_id 這句是必定查詢成功的,就算插入失敗也會(huì)返回更前一次插入成功的自增ID,千萬不要用自增ID判斷語句是否插入成功。

更新


//連接數(shù)據(jù)庫
$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);//設(shè)置 dm 連接和語句的相關(guān)屬性,設(shè)置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);

更新就很簡單了

刪除


//連接數(shù)據(jù)庫
$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);//設(shè)置 dm 連接和語句的相關(guān)屬性,設(shè)置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);

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

事務(wù)


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

//連接數(shù)據(jù)庫
$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);//設(shè)置 dm 連接和語句的相關(guān)屬性,設(shè)置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);//事務(wù)自動(dòng)提交關(guān)閉
$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);//開啟事務(wù)自動(dòng)提交,結(jié)束事務(wù)

/* 斷開連接 */
dm_close($link);

踩過的坑


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

二、如果之前使用的數(shù)據(jù)庫是mysql,時(shí)間格式 DATETIME 和 TIMESTAMP 這兩種類型后面的標(biāo)度要注意一下,如果不是0的話時(shí)間精度會(huì)更長
php7怎么連接使用dm數(shù)據(jù)庫

三、有些字段查詢出來的話會(huì)變成大寫,比如“count”
php7怎么連接使用dm數(shù)據(jù)庫

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

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

比方舉一個(gè)錯(cuò)誤的例子:

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

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

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

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

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);

關(guān)于“php7怎么連接使用dm數(shù)據(jù)庫”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

名稱欄目:php7怎么連接使用dm數(shù)據(jù)庫
文章出自:http://bm7419.com/article12/pcihgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站排名、Google、軟件開發(fā)品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營