亂碼一直是困擾PHP初學者的一個非常大的問題,現在總結下造成亂碼的原因及解決方法:
公司主營業務:網站設計、成都網站建設、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。創新互聯建站是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創新互聯建站推出寧縣免費做網站回饋大家。
一、HTML頁面編碼:meta http-equiv=content-type content=text/html; charset=utf-8 這里的編碼要和數據庫編碼,及連接數據庫編碼;
二、文件在存儲編碼:比如文件inde.php,改變其存儲編碼為所需編碼。只需用EditPlus等文本編輯軟件 文件另存為,在編碼中選擇正確的編碼(這點很多人都會忽略);
三、數據庫編碼:比如用的是phpmyadmin 選擇數據庫后,選擇操作選項。下面有一個整理,這里面也要設置成統一的編碼;
四、表編碼:操作和第三點類似。這里就不重復了;
五、字段編碼:在建表的建字段的時候,有個整理。如果內容有漢字,就一定要改成統一的編碼;
六、連接數據庫時mysql_select_db()后面,要加一句 mysql_query( set names utf8 );
七、 (剛遇到的)本地測試成功后的網站,傳到網上去,會有亂碼。可能會是在本地導出數據時沒有選擇正確的編碼,所以才會在導入到web上后有亂碼問題。
php操作mysql步驟:
1.$connect=mysql_connect('localhost','root','123456')
or
die('數據庫連接失敗。'mysql_error());鏈接mysql。
2.mysql_select_db('database',$connect)選擇鏈接的數據庫。
3.mysql_query('Set
names
gb2312');$sql
=
"select
*
from
blog_article";準備要查詢的數據。
4.$datas
=
mysql_query($sql);執行sql查詢。
5.$data
=
mysql_fetch_assoc($datas)得到查詢到的緩存在內存中的一條數據。
6.print_r($data);
相同點:三個函數都是返回數據庫中查詢到的一行數據(說的再清楚點就是一條數據)。
不同點:mysql_fetch_assoc()用的是數據庫中相應的字段名作為的key值(也就是數組下標)
如:filed['id']=1;
mysql_fetch_row()用的是自動生成的數字(從0開始依次生成)作為的key值(也就是數組下標)
如:filed[0]=1;
mysql_fetch_array()用的是自動生成的數字(從0開始依次生成)作為的key值(也就是數組下標),而且它還同時生成數據庫中相應的字段名作為的key值(也就是數組下標)
如:
filed[0]=1,filed['id']=1;也就是說,mysql_fetch_array()將mysql_fetch_assoc()和mysql_fetch_row()查詢到的結果合為了一體了。
mysql_fetch_object()與mysql_fetch_assoc()差不多。只是mysql_fetch_assoc()返回的是數組。mysql_fetch_object()返回的是object對象。
mysql_insert_id() 取得上一步
INSERT
操作產生的
ID。
mysql_result()
函數返回結果集中一個字段的值。
mysql_num_fields()
函數返回結果集中字段的數目。
mysql_affected_rows();返回前一次
MySQL
操作所影響的記錄行數。
mysql_num_rows(mysql_query($sql))獲得結果集中行的數目。
mysql_pconnect()
函數打開一個到
MySQL
服務器的持久連接。
mysql_pconnect()
和
mysql_connect()
非常相似,但有兩個主要區別:
1.
當連接的時候本函數將先嘗試尋找一個在同一個主機上用同樣的用戶名和密碼已經打開的(持久)連接,如果找到,則返回此連接標識而不打開新連接。
2.
其次,當腳本執行完畢后到
SQL
服務器的連接不會被關閉,此連接將保持打開以備以后使用(mysql_close()
不會關閉由
mysql_pconnect()
建立的連接)。
mysql_data_seek(mysql_query($sql),8);獲得結果集中的第8條數據。(mysql_num_rows(mysql_query($sql))和mysql_data_seek(mysql_query($sql),8)在mysql_unbuffered_query($sql)不可以使用。)
mysql_unbuffered_query($sql)和mysql_query($sql)效果差不多,但是
mysql_unbuffered_query($sql)不緩存。mysql_query($sql)會緩存查詢的結果。
mysql_close();關閉mysql的最近的鏈接。
mysql_field_flags(mysql_query($sql),6)返回第六個字段的表屬性輸出如:not_null
primary_key
auto_increment
。
mysql_fetch_lengths(mysql_query($sql))返回該條數據的所有字段的每個字段的長度。返回的是一個數字組成的數組。
mysql_field_name(mysql_query($sql),3)返回第三個字段的字段名。
mysql_field_table(mysql_query($sql),0)返回指定字段所在的表名。
mysql_free_result(mysql_query($sql))
函數釋放結果內存。
mysql_get_client_info()
函數返回
MySQL
客戶端信息。
mysql_get_host_info()
取得
MySQL
主機信息。
我也很就糾結這個問題,現在我是這樣做的
$res = mysqli_query ($sql, "select BCur from microvast where id between 1 and 50");
foreach($res as $x=$x_value) {
foreach($x_value as $k=$v) {
$data[] = $v;
}
這樣可以$data[]生成了‘BCur’一列的一個索引數組,但是執行效率不高,多列就要做多次查詢,期待更好的方法。
while ($row=mysqli_fetch_assoc($res)){
$id=$row["id"];
......
echo $id;
}
這個辦法只能打印出來
php通過odbc用sql語句查詢時無法查詢中文,應該怎么轉碼
咱們以MYSQL為例吧。
MYSQL數據庫存在著編碼問題,主要體現在數據庫里漢字會出現亂碼,WEB頁面漢字顯示不正常。
歸結起來只有一個原因:會出現編碼的地方存在編碼不一致。
稍微改一下你的自定義函數
function?my_json_sql($my_sql){
$result?=?mysql_query($my_sql);
//判斷執行結果
if($result??mysql_affected_rows()0){
//先聲明一個空數組
$arr=array();
//循環處理結果
while($row?=?@mysql_fetch_assoc($result)){
$arr[]=$row;
}
return?$arr;
}
return?false;
}
php轉碼一般用iconv()方法。
如:iconv("轉碼前的編碼","轉碼后的編碼",需要轉換編碼的字符串);
$result_array?=?array();//定一個接收結果的空數組。
$array=array("電腦"=12,"內存"=3,"顯示器"=19);//定義數組即要轉換編碼的數組
foreach?($s?as?$key?=?$value)?{//使用foreach循環遍歷數組。
$key=iconv("GBK","UTF-8",$key);//對數組的鍵進行轉碼即要轉換編碼的文字。
$result_array[$key]=$value;//從新拼接一個新的數組(轉碼后)
}
var_dump($result_array)//打印轉碼后的數組進行確認。
分享題目:php數據庫查詢轉碼 php數據類型轉換
網站URL:http://vcdvsql.cn/article22/hejcjc.html
成都網站建設公司_創新互聯,為您提供網站營銷、品牌網站設計、商城網站、用戶體驗、軟件開發、虛擬主機
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯