MYSQL的字段名轉義使用返引號`,不是單引號,注意上面代碼的下面部分:
我們提供的服務有:成都網(wǎng)站建設、網(wǎng)站設計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、金平ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的金平網(wǎng)站制作公司
WHERE '賬戶'='中文'; //查詢中文字報錯,數(shù)字字母都能正常查詢
【賬戶】是字段名,應使用反引號:
`賬戶`
【中文】是常量,單雙引號都可以,但是要注意你現(xiàn)在的語句是在單引號里面,因此應該轉義或者使用雙引號,這部分可以修改為:
WHERE 賬戶="中文"';
另外,如果只是查詢中文內容才報錯,可能你粘貼代碼和原始代碼有區(qū)別,原始代碼沒有把字段名放在單引號里面,否則是查不到內容的。查詢中文內容報錯,一般是中文的編碼和網(wǎng)頁文件的編碼、以及數(shù)據(jù)庫的編碼不一致,你這來數(shù)據(jù)庫是UTF8,那么PHP腳本文件、瀏覽器網(wǎng)頁都必須使用UTF-8
php
向數(shù)據(jù)庫發(fā)送中文字符無法查詢?5
數(shù)據(jù)庫中有這個字段,用sql語句直接可以查,但是php發(fā)送查詢就查不了,數(shù)據(jù)表的格式是utf8_general_ciphp保存的utf-8
數(shù)據(jù)庫的編碼是 gbk 的,在查詢的時候把中文(utf-8)轉換成 gbk編碼就可以了
$nickname=iconv('utf-8','gbk//TRANSLIT',$nickname);
轉換后才執(zhí)行查詢
你的問題可能是數(shù)據(jù)庫連接時未指定字符集:$conn-query("set names utf8");
詳細如下:
將中文字符轉換一下,可能你的網(wǎng)頁編碼是ansi非utf-8的:
$w=iconv("gb2312","utf-8",$w);
不過我不確定這樣做你能否成功。關于字符有以下幾點你看下:
數(shù)據(jù)庫連接時: $conn-query("set names gbk");
數(shù)據(jù)庫的字符集:建議建立數(shù)據(jù)庫時就指定字符集,比如gbk或者utf-8,這樣你就沒必要為單獨的表或者字段指定字符集
網(wǎng)頁字符:META CONTENT="text/html; charset=gbk" HTTP-EQUIV="Content-Type" /
保持著三者使用的字符集一樣,基本能解決你的問題。
當然,在使用ajax時。js傳遞過來的是utf-8,如果你的php文件和數(shù)據(jù)庫使用的是中文字符集如gbk,gb2312,那么就需要對該值用iconv函數(shù)轉換下字符集,如:$w=iconv("utf-8","gb2312",$w);
總之,需要這幾塊的字符集保持一致。