php mssql擴充套件SQL查詢中文欄位名解決方法

2022-09-29 22:21:17 字數 1191 閱讀 8144

一、問題:

資料庫是ms sqlserver2000,要把sqlserver2000裡的一張表的資料匯入mysql5,其中sqlserver2000表的字段以簡體中文命名(強烈建議不要以中文做為欄位名)。其實操作就是對sqlserver查詢記錄,插入到mysql裡。選擇的指令碼語言是php,php開啟mssql和mysql擴充套件,對這兩個資料庫操作都是很容易的問題。

問題就出現在sqlserver中表的欄位名是中文,寫好的查詢語句在sqlserve裡測試是通過有記程式設計客棧錄返回,用php的mssql擴充套件查詢就是報錯。

上網查了資料,網上相關的資訊不太多,很多網友都認為是php的mssql擴充套件不支援sql語句中有中文。查了一下資料,php的mssql是支援sql中有中文的語句。出現報錯問題大多是因為編碼的問題,編碼資料庫和編碼與查詢語句編碼不統一,查詢語句到sqlserver裡中文部分就成了亂碼,造成查詢失敗。

二、解決方法:

知道了原因,接下來分析解決,確認是編碼不統一的問題。解決分以下幾步:

1、確認sqlserver 資料庫的編碼,我的資料編碼是gbk。

2、確認當前php指令碼檔案的編碼,我的編碼是utf-8。

3、轉換sql查詢語句的的編碼。

補充:有的網友提到要把php的指令碼檔案編碼程式設計客棧轉成和資料庫編碼一致,其實這一步大可不必,只要確認你的sql語句和資料庫的編碼一致就可以,這裡建議不必轉換的原因是如果你的php指令碼檔案裡包含其它php指令碼,那也得對所有include或require的指令碼檔案編碼轉換,不然php指令碼編碼不統一很容易出錯,若互相關聯的檔案很多,這也是一件很麻煩的問題而且把事情複雜化了。

三、方案:

寫乙個轉換函式,在把sql操作前把sql語句編碼轉程式設計客棧換。下面貼出我的範例**:

複製** **如下:

//編碼轉換函式

function utf8togb($s)

//建議把所有中文字段用英文別名替換,方便下面操作還有編碼轉換等問題

$sql="select [id], [欄目] as typeid, [正題] as title, [作者] as author, convert(text, [正文]) as body from [文章表];";

$sql = utf8togb($sql);

本文標題: php mssql擴充套件sql查詢中文欄位名解決方法

本文位址: /wangluo/php/89557.html

php mssql 分頁SQL語句優化 持續影響

經過sql優化後的分面查詢速度能夠得到大幅提高。filename page.sql.class.php creattime 2009 01 06 descrition 此類為sql語句處理類。updatetime 1 null version jswweb1.0.0 author fkedwgwy ...

php mssql 分頁SQL語句優化 持續影響

複製 如下 php filename page.sql.class.php creattime 2009 01 06 descrition 此類為sql語句www.cppcns.com處理類。updatetime 1 null version jswweb1.0.0 author fkedwgwy ...

mysql擴充套件使用 使用MySQL查詢擴充套件

在本教程中,將學習了解mysql查詢擴充套件,根據自動相關性的反饋擴大搜尋結果。mysql查詢擴充套件簡介 在某些情況下,使用者希望基於他們知道的資訊來搜尋資訊。有時使用他們自己的知識來定義關鍵字來搜尋資訊,但是通常這些關鍵字又太短。為了幫助使用者使用這些短的關鍵字找到他們想要的東西,mysql全文...