顯然這就是編碼問題,但是問題從哪來的呢,
我把文件編碼以及代碼的編碼都設置成utf-8了,為什么還有這個問題于是我就開始寫測試腳本
第一條
mysql_query('insert into table value(1,1,"思考思考123")')
測試沒有問題
第二條
$name=$_GET["name"];
mysql_query('insert into table value(1,1,"'.$name.'")')
測試出問題了,數據庫竟然插入了兩條數據,原來編碼問題是從網絡請求中產生的;
?
既然發現了問題就解決問題,
一種方法是對網絡請求進行過濾
一種是對sql語句過濾。
代碼的邏輯就是如果不是utf-8編碼的語句就不能執行。
采用如下方法進行過濾
if(?mb_detect_encoding($sql, array('GB2312','GBK','UTF-8'))=="UTF-8"){
...
}
?
?
?
insert into table value(1,1,"思考思考123")