php插入中文
⑴ php使用utf8插入中文數據到Mysql中文顯示會亂碼怎麼辦
資料庫使用utf8編碼,需要在操作的過程中統一全部編碼。
1.資料庫默認編碼
CREATEDATABASE`test`DEFAULTCHARACTERSET'utf8';
2.表默認編碼
CREATETABLE`tablea`(
`id`INTNOTNULLAUTO_INCREMENT,
`title`VARCHAR(100)NULL,
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
3.欄位默認編碼
默認情況下,欄位的編碼同表的編碼,但是如果修改了表的編碼,欄位編碼不會同步修改,需要手動修改
這里修改編碼測試我將utf8 改為 gb2312 ,僅用於觀察修改後的情況(實際使用中可能是將gbk修改為utf8)
ALTERTABLE`test`.`tablea`CHARACTERSET=gb2312;
--修改表編碼後,查看建表語句
showcreatetable`tablea`;
--可以看到輸出的建表語句中欄位單獨設置了編碼
CREATETABLE`tablea`(
`id`INTNOTNULLAUTO_INCREMENT,
`title`VARCHAR(100)CHARACTERSETutf8NULL,
)ENGINE=InnoDBDEFAULTCHARSET=gb2312;
--需要手動修改欄位編碼
ALTERTABLE`tablea`
CHANGECOLUMN`title``title`VARCHAR(100)CHARACTERSET'gb2312'NULLDEFAULTNULL;
4.當前資料庫連接的編碼
連接數時設置編碼
//PDO連接
$db=newPDO('mysql:host=myhost;dbname=test','login','password',
array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SETNAMES'UTF8'')
);
//mysqli連接
$link=mysqli_connect("127.0.0.1","my_user","my_password","test");
mysqli_query($link,"SETNAMES'utf8';");
通過以上幾步操作,基本可以保證資料庫使用過程中不會出現亂碼
⑵ 用php往資料庫里插入中文為什麼亂碼
我也曾遇到過這個問題,折騰了好幾個月終於找到原因了:
如下:
$query = "INSERT INTO biao(topid,title,link,body) VALUES(0,'這時標題','this my link','這里是身體');";
mysql_query(set names utf8);
mysql_query($query,$conn);
原因就是少了 mysql_query(set names utf8); 這一句 ,
並且這一句一定要加在 查詢語句(mysql_query($query,$conn);)的前面;
希望能夠幫到你,一起進步
⑶ php插入中文數據時 mysql亂碼
如果mysql字元集都設置沒問題的話,只是php這邊程序插入的問題,query語句前加mysql_query('set
names
utf8');
⑷ PHP插入中文到mysql資料庫出現亂碼
字元集的問題,在做插入操作之前執行一下語句:set names gbk;
⑸ php往mysql插入中文,在資料庫顯示的是問號
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
meta標簽的編碼格式寫錯誤了,把這個替換你原來那個就行了