MYSQL的字段名轉(zhuǎn)義使用返引號`,不是單引號,注意上面代碼的下面部分:
創(chuàng)新互聯(lián)專注于臨沭企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),成都商城網(wǎng)站開發(fā)。臨沭網(wǎng)站建設(shè)公司,為臨沭等地區(qū)提供建站服務(wù)。全流程按需求定制網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
WHERE '賬戶'='中文'; //查詢中文字報錯,數(shù)字字母都能正常查詢
【賬戶】是字段名,應(yīng)使用反引號:
`賬戶`
【中文】是常量,單雙引號都可以,但是要注意你現(xiàn)在的語句是在單引號里面,因此應(yīng)該轉(zhuǎn)義或者使用雙引號,這部分可以修改為:
WHERE 賬戶="中文"';
另外,如果只是查詢中文內(nèi)容才報錯,可能你粘貼代碼和原始代碼有區(qū)別,原始代碼沒有把字段名放在單引號里面,否則是查不到內(nèi)容的。查詢中文內(nèi)容報錯,一般是中文的編碼和網(wǎng)頁文件的編碼、以及數(shù)據(jù)庫的編碼不一致,你這來數(shù)據(jù)庫是UTF8,那么PHP腳本文件、瀏覽器網(wǎng)頁都必須使用UTF-8
數(shù)據(jù)庫采用UTF8編碼,而頁面申明編碼是GB2312,這是最常見的產(chǎn)生亂碼的原因。這時候在PHP腳本里面直接SELECT數(shù)據(jù)出來的就是亂碼,需要在查詢前先使用:mysql_query("SET NAMES GBK");或mysql_query("SET NAMES GB2312");來設(shè)定MYSQL連接編碼,保證頁面申明編碼與這里設(shè)定的連接編碼一致(GBK是GB2312的擴(kuò)展)。如果頁面是UTF-8編碼的話,可以用:mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如頁面申明的編碼與數(shù)據(jù)庫內(nèi)部編碼一致可以不設(shè)定連接編碼。
事實上MYSQL配置文件my.ini中定義了2個默認(rèn)編碼,分別是[client]里的default-character-set和[mysqld]里的default-character-set來分別設(shè)定默認(rèn)時候客戶端連接和數(shù)據(jù)庫內(nèi)部所采用的編碼。上面指定的編碼其實是MYSQL客戶端連接服務(wù)器時候的命令行參數(shù)character_set_client,來告訴MYSQL服務(wù)器接受到的客戶端數(shù)據(jù)是什么編碼的,而不是采用默認(rèn)編碼。
轉(zhuǎn)自:
文件編碼設(shè)置什么是根據(jù)你的情況而定
大部分人是設(shè)置為gb2312和utf-8
php,數(shù)據(jù)庫使用的編碼和網(wǎng)頁使用 的編碼要統(tǒng)一
比如,你數(shù)據(jù)庫選擇的編碼是gb2312,那么你網(wǎng)頁文件的編碼就不要設(shè)置utf-8,也要是gb2312
假設(shè)你的數(shù)據(jù)庫編碼是gb2312,那你新建文件的時候,將文件屬性中的編碼屬性設(shè)置為gb2312
然后
在文件的開頭設(shè)置:
?php
header('Content-Type:text/html;charset:gb2312');
?
但數(shù)據(jù)庫連接成功后,馬上設(shè)置一個數(shù)據(jù)庫操作編碼:
?php
$Con?=?mysql_connect(.....);這里連接數(shù)據(jù)庫
mysql_query('SET?NAMES?GB2312');//設(shè)置編碼
?
做到這些,你的問題就應(yīng)該不會出現(xiàn)了!