MYSQL的字段名轉(zhuǎn)義使用返引號`,不是單引號,注意上面代碼的下面部分:
站在用戶的角度思考問題,與客戶深入溝通,找到陽谷網(wǎng)站設(shè)計(jì)與陽谷網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋陽谷地區(qū)。
WHERE '賬戶'='中文'; //查詢中文字報(bào)錯(cuò),數(shù)字字母都能正常查詢
【賬戶】是字段名,應(yīng)使用反引號:
`賬戶`
【中文】是常量,單雙引號都可以,但是要注意你現(xiàn)在的語句是在單引號里面,因此應(yīng)該轉(zhuǎn)義或者使用雙引號,這部分可以修改為:
WHERE 賬戶="中文"';
另外,如果只是查詢中文內(nèi)容才報(bào)錯(cuò),可能你粘貼代碼和原始代碼有區(qū)別,原始代碼沒有把字段名放在單引號里面,否則是查不到內(nèi)容的。查詢中文內(nèi)容報(bào)錯(cuò),一般是中文的編碼和網(wǎng)頁文件的編碼、以及數(shù)據(jù)庫的編碼不一致,你這來數(shù)據(jù)庫是UTF8,那么PHP腳本文件、瀏覽器網(wǎng)頁都必須使用UTF-8
我說一下幾個(gè)步驟:
1、首先你得有一個(gè)存儲這些數(shù)據(jù)的數(shù)據(jù)庫表,比如數(shù)據(jù)庫表的結(jié)構(gòu)是這樣的。
數(shù)據(jù)庫表名為:user
字段:編號(id),姓名(name),手機(jī)(mobile),產(chǎn)品名稱(productName) 主鍵為id
2、實(shí)現(xiàn)你需要的功能:
第一步:你需要連接數(shù)據(jù)庫,有一個(gè)連接數(shù)據(jù)庫的文件:conn.php。內(nèi)容如下:
// 我假設(shè)你的數(shù)據(jù)庫是mysql的,假設(shè)你的數(shù)據(jù)庫用戶名為root,密碼為123456,根據(jù)你數(shù)據(jù)庫的實(shí)際情況改寫成你的。數(shù)據(jù)庫名稱假設(shè)為db_889888658
?php
$conn=mysql_connect("localhost","root","123456") or die("數(shù)據(jù)庫連接失敗,請檢查用戶名或密碼");
mysql_select_db("db_889888658",$conn);
mysql_query("SET NAMES 'gb2312'");
?
第二步:你需要一個(gè)添加數(shù)據(jù)的表單,就相當(dāng)于一個(gè)注冊或添加數(shù)據(jù)的頁面。如文件為:add.html內(nèi)容如下:
form action="reg.php" method="post"
input type="text" name="name"br/
input type="text" name="mobile"br/
input type="text" name="productName"/br
input type="submit" name="submit" value="添加數(shù)據(jù)"
/form
第三步:寫一個(gè)處理你表單提交的數(shù)據(jù)的文件reg.php。內(nèi)容如下:
?php
include "conn.php";
if(isset($_POST["submit"])){
$name=$_POST["name"];
$mobile=$_POST["mobile"];
$productName=$_POST["productName"];
$sql="INSERT INTO 'user'(id,name,mobile,productName) VALUES (NULL,$name,$mobile,$productName)";
$query=mysql_query($sql);
$num=mysql_affected_rows($conn);
if($num=1){
echo "scriptalert('數(shù)據(jù)添加成功');location.href='add.html';/script";
}else{
echo "scriptalert('數(shù)據(jù)添加失敗');history.back();/script";
}
}
?
第四步,第三步已經(jīng)實(shí)現(xiàn)你說的第一個(gè)功能。下面說一下你的第二個(gè)功能。寫一個(gè)表單,輸入你要查詢的手機(jī)號,點(diǎn)擊“查詢”按鈕查詢你想要的字段。
?php
if($_POST["submit"]){
$mobile=$_POST["mobile"];
if(!empty($mobile)){
include "conn.php";
$sql="SELECT * FROM 'user' WHERE 'mobile'='$mobile'";
$query=mysql_query($sql);
while($rs=mysql_fetch_array($query)){
$str="查詢結(jié)果:br/";
$str.="用戶名:".$rs["name"]."?";
$str.="產(chǎn)品名:".$rs["name"]."?";
}
echo "您查詢的手機(jī)號為".$mobile."的數(shù)據(jù)信息如下:br/";
echo $str;
}else{
echo "請輸入手機(jī)號";
}
}
?
form action="" method="post"
請輸入您要查詢的手機(jī)號:input type="text" name="mobile" input type="submit" name="submit" value="查詢"
/form
數(shù)據(jù)庫采用UTF8編碼,而頁面申明編碼是GB2312,這是最常見的產(chǎn)生亂碼的原因。這時(shí)候在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è)定連接編碼。
事實(shí)上MYSQL配置文件my.ini中定義了2個(gè)默認(rèn)編碼,分別是[client]里的default-character-set和[mysqld]里的default-character-set來分別設(shè)定默認(rèn)時(shí)候客戶端連接和數(shù)據(jù)庫內(nèi)部所采用的編碼。上面指定的編碼其實(shí)是MYSQL客戶端連接服務(wù)器時(shí)候的命令行參數(shù)character_set_client,來告訴MYSQL服務(wù)器接受到的客戶端數(shù)據(jù)是什么編碼的,而不是采用默認(rèn)編碼。
轉(zhuǎn)自:
要解決亂碼首先需要知道出現(xiàn)亂碼的原因:
一、PHP+MySQL出現(xiàn)中文亂碼的原因。
1. MYSQL數(shù)據(jù)庫的編碼是utf8,與PHP網(wǎng)頁的編碼格式不一致,就會造成MYSQL中的中文亂碼。
2. 使用MYSQL中創(chuàng)建表、或者選擇字段時(shí)設(shè)置的類型不是utf8,而網(wǎng)頁編碼不是utf8,也可能造成MYSQL中文亂碼.
3. PHP頁面的字符集與數(shù)據(jù)庫的編碼不一致。
4. PHP連接MYSQL數(shù)據(jù)庫,操作是設(shè)定的語句指定的編碼和頁面編碼,PHP頁面編碼不一致。
5. 用戶提交的HTML頁面編碼,和顯示數(shù)據(jù)的頁面編碼不一致 ,就肯定會造成PHP頁面亂碼.
二、解決中文亂碼:
1. 網(wǎng)頁編碼設(shè)置。一般在HTML代碼中的文件頭html中加入屬性:
meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″
保證,網(wǎng)頁是"utf-8"編碼。
2. PHP代碼設(shè)置。在php代碼的開始部分加入以下代碼:
header(”Content-type: text/html;charset=utf-8″);
且要求保存的文件編碼方式是utf-8,這樣就保證了該文件也是utf-8編碼。
3. 數(shù)據(jù)庫中表的字段中存儲中文的部分,要設(shè)置為utf8_general_ci類型。
4.PHP在連接數(shù)據(jù)庫操作時(shí),要設(shè)置操作的字段類型為utf8,設(shè)置方法如下:
mysql_connect(’localhost’,'user’,'password’);mysql_select_db(’db’);mysql_query(”set names utf8;”); //**設(shè)置字符集***
取到值后,在輸出的時(shí)候%=變量*100%/100,這樣用PHP把數(shù)據(jù)輸入,后面跟/100的字符就可以了。