資料庫採用utf8編碼,而頁面申明編碼是gb2312,這是最常見的產生亂碼的原因。這時候在php指令碼裡面直接select資料出來的就是亂碼,需要在查詢前先使用: mysql_query("set names gbk");
來設定mysql連線編碼,保證頁面申明編碼與這裡設定的連線編碼一致(gbk是gb2312的擴充套件)。如果頁面是utf-8編碼的話,可以用:
mysql_query("set names utf8");
注意是utf8而不是一般用的utf-8。假如頁面申明的編碼與資料庫內部編碼一致可以不設定連線編碼。
注:事實上mysql的資料輸入輸出比上面講的更複雜一些,mysql配置檔案my.ini中定義了2個預設編碼,分別是[client]裡的 default-character-set 和[mysqld]裡的default-character-set來分別設定預設時候客戶端連線和資料庫內部所採用的編碼。我們上面指定的編碼其實是 mysql客戶端連線伺服器時候的命令列引數character_set_client,來告訴mysql伺服器接受到的客戶端資料是什麼編碼的,而不是 採用預設編碼。
redis 快取和資料庫寫入不一致問題
cap理論 cache aside pattern 快取 資料庫讀寫的模式 1.讀的時候,先讀快取,快取沒有的話,就讀資料庫,然後取出資料後放入快取,同時返回響應。2.更新的時候,先更新資料庫,然後再刪除快取。讀請求和寫請求序列化,串到乙個記憶體佇列裡去 序列化可以保證一定不會出現不一致的情況,但是...
Mybatis關聯查詢和資料庫不一致問題分析與解決
mybatis關聯查詢和資料庫不一致問題分析與解決 本文的前提是,確定sql語句沒有問題,確定在資料庫中使用sql和專案中結果不一致。在使用springmvc mybatis做多表關聯時候,發現也不報錯,也沒有出現任何問題,但是就是和資料庫查出的資料不一致,永遠返回的只有一條資料,究其原因,在做多表...
高併發快取資料庫不一致
在一般的 的架構中,我們都會採用快取架構來抗住高併發場景下的讀請求。那麼對於寫請求,先更新快取還是先更新資料庫?本文以商品庫存資訊為例,我們展開討論,假設剛開始資料庫庫存 100,快取中庫存 100.1.先更新資料庫,後更新快取 這種情況下,當需要更新庫存的時候,先更新資料庫中的庫存 99,然後再更...