phpmysql創建資料庫
一、轉碼失敗
在數據寫入到表的過程中轉碼失敗,資料庫端也沒有進行恰當的處理,導致存放在表裡的數據亂碼。
針對這種情況,前幾篇文章介紹過客戶端發送請求到服務端。
其中任意一個編碼不一致,都會導致表裡的數據存入不正確的編碼而產生亂碼。
比如下面簡單一條語句:
set @a = "文本字元串";
insert into t1 values(@a);
變數 @a 的字元編碼是由參數 CHARACTER_SET_CLIENT 決定的,假設此時編碼為 A,也就是變數 @a 的編碼。
2. 寫入語句在發送到 MySQL 服務端之前的編碼由 CHARACTER_SET_CONNECTION 決定,假設此時編碼為 B。
3. 經過 MySQL 一系列詞法,語法解析等處理後,寫入到表 t1,表 t1 的編碼為 C。
那這里編碼 A、編碼 B、編碼 C 如果不兼容,寫入的數據就直接亂碼。
二、客戶端亂碼
表數據正常,但是客戶端展示後出現亂碼。
這一類場景,指的是從 MySQL 表裡拿數據出來返回到客戶端,MySQL 里的數據本身沒有問題。客戶端發送請求到 MySQL,表的編碼為 D,從 MySQL 拿到記錄結果傳輸到客戶端,此時記錄編碼為 E(CHARACTER_SET_RESULTS)。
那以上編碼 E 和 D 如果不兼容,檢索出來的數據就看起來亂碼了。但是由於數據本身沒有被破壞,所以換個兼容的編碼就可以獲取正確的結果。
這一類又分為以下三個不同的小類:
1)欄位編碼和表一致,客戶端是不同的編碼
比如下面例子, 表數據的編碼是 utf8mb4,而 SESSION 1 發起的連接編碼為 gbk。那由於編碼不兼容,檢索出來的數據肯定為亂碼。
2)表編碼和客戶端的編碼一致,但是記錄之間編碼存在不一致的情形
比如表編碼是 utf8mb4,應用端編碼也是 utf8mb4,但是表裡的數據可能一半編碼是 utf8mb4,另外一半是 gbk。那麼此時表的數據也是正常的,不過此時採用哪種編碼都讀不到所有完整的數據。這樣數據產生的原因很多,比如其中一種可能性就是表編碼多次變更而且每次變更不徹底導致(變更不徹底,我之前的篇章里有介紹)。舉個例子,表 t3 的編碼之前是 utf8mb4,現在是 gbk,而且兩次編碼期間都被寫入了正常的數據。
3)每個欄位的編碼不一致,導致亂碼和第二點一樣的場景。不同的是:非記錄間的編碼不統一,而是每個欄位編碼不統一。舉個例子,表 c1 欄位 a1,a2。a1 編碼 gbk,a2 編碼是 utf8mb4。那每個欄位單獨讀出來數據是完整的,但是所有欄位一起讀出來,數據總會有一部分亂碼。
三、LATIN1
還有一種情形就是以 LATIN1 的編碼存儲數據
估計大家都知道字元集 LATIN1,LATIN1 對所有字元都是單位元組流處理,遇到不能處理的位元組流,保持原樣,那麼在以上兩種存入和檢索的過程中都能保證數據一致,所以 MySQL 長期以來默認的編碼都是 LATIN1。這種情形,看起來也沒啥不對的點,數據也沒亂碼,那為什麼還有選用其他的編碼呢?原因就是對字元存儲的位元組數不一樣,比如 emoji 字元 "❤",如果用 utf8mb4 存儲,佔用 3 個位元組,那 varchar(12) 就能存放 12 個字元,但是換成 LATIN1,只能存 4 個字元。
B. php mysql怎麼創建資料庫圖解
在一個伺服器上一般來講都不止一個站點,更不止一個MySQL(和PHP搭配之最佳組合)資料庫。
為了防止安全隱患,我們一般針對每個資料庫都設置了獨立的資料庫訪問帳號,該帳號僅有訪問該資料庫的許可權。下面就讓我們來具體演示一下:
1、首先我們要登陸php(做為現在的主流開發語言)MyAdmin,不做演示。
4、在主界面的右邊點擊「許可權」來創建資料庫帳號。
5、在許可權頁面中,我們點擊「添加新用戶」
6、在該頁面中,我們填寫要創建的資料庫用戶名,該用戶的訪問范圍,及密碼。
如上圖,我們填寫了用戶名為:cncmsuser,該資料庫用戶只允許本機訪問,主機一項選擇本地;密碼我們使用自動生成的,點下面的「Generate」會生成一個隨機密碼,然後點「Copy」會自動填寫到密碼框中。
下面的框都不選,直接拉到頁面最下面點執行即可創建一個新用戶。
資料庫用戶創建成功,會返回如下頁面:
7、最重要的一步,設置該用戶的資料庫訪問許可權
在資料庫用戶添加成功返回的頁面中可以直接設置許可權。這里我們選擇按資料庫指定許可權:
如上圖,在資料庫列表中選擇我們剛剛創建的cncmstest,即會自動進入該資料庫的許可權設置頁面。
在上圖的許可權設置中,我們把「數據」、「結構」兩列的許可權全部選中,管理許可權都不要選。點執行即可。
到這里,我們已經全部設置完畢了,創建了一個資料庫:cncmstest,並創建了資料庫用戶cncmsuser,特別指定了該用戶只對cncmstest的訪問許可權。如此,便達到了我們一開始所講的目的:為每一個資料庫指定獨立的用戶訪問許可權。
C. 如何搭建php+mysql環境
1、下載phpstudy軟體包,雙擊運行這個phpstudy軟體包。在「安裝-phpstudy 綠色集成環境」對話框里點擊「下一步」按鈕。
2、在「安裝-phpstudy 綠色集成環境」對話框里請「選擇目標位置」,如默認安裝,請直接點擊「下一步」按鈕。
3、「安裝-phpstudy 綠色集成環境」選擇PHP程序存放目錄對話框里,如不想更改,請點擊「下一步」按鈕。
4、在「安裝-phpstudy 綠色集成環境」選擇你要安裝組件,點擊「下一步」。
5、在「安裝-phpstudy 綠色集成環境」選擇開始菜單文件夾對話框里,可以修改phpstudy名字和在開始菜單里的文件夾位置,本人建議默認安裝,點擊「下一步」。下面正式進入phpstudy 綠色集成環境安裝過程。
6、安裝過程直到出現完成為止,點擊「完成」按鈕,瀏覽器打開localhost頁面,phpStudy 探針能正常顯示,代表你的php+mysql+apache環境搭建成功。
以上就是win10系統下一鍵搭建php+mysql+apache環境的方法介紹了。想要了解更多win10系統相關資訊或windows10正式版下載信息的話,請時刻關注系統城。
D. php+mysql鏁版嵁搴撲腑鏂囪繛鎺ヤ貢鐮侊紵set names utf8 涔熶笉琛岋紒
MySQL浼氬嚭鐜頒腑鏂囦貢鐮佺殑鍘熷洜涓嶅栦箮涓嬪垪鍑犵偣錛
1.server鏈韜璁懼畾闂棰橈紝瀹夎呮椂浣跨敤鐨勫瓧絎﹂泦鏄痩atin1
2.table鐨勮緋昏懼畾闂棰(鍖呭惈character涓巆ollation)
3.瀹㈡埛絝紼嬪紡(渚嬪俻hp)鐨勮繛綰胯緋昏懼畾闂棰
姝e傛偍璁懼畾鐨勪竴鏍鳳紝寤鴻浣跨敤UTF8錛屽彲鍏煎逛竴鍒囧瓧絎︺備互涓嬩負瑙e喅鍔炴硶錛
涓銆侀伩鍏嶅壋寤烘暟鎹搴撳強琛ㄥ嚭鐜頒腑鏂囦貢鐮佸拰鏌ョ湅緙栫爜鏂規硶
1銆佸壋寤烘暟鎹搴撶殑鏃跺欙細CREATE DATABASE `test`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
2銆佸緩琛ㄧ殑鏃跺 CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
鍗沖緩搴撳拰寤鴻〃鏃墮兘浣跨敤鐩稿悓鐨勭紪鐮佹牸寮忋
浣嗘槸濡傛灉浣犲凡緇忓緩浜嗗簱鍜岃〃鍙浠ラ氳繃浠ヤ笅鏂瑰紡榪涜屾煡璇銆
鎵ц孲ET NAMES utf8鐨勬晥鏋滅瓑鍚屼簬鍚屾椂璁懼畾濡備笅錛
SET character_set_client='utf8';
SET character_set_connection='utf8';
SET character_set_results='utf8';
浜屻侀伩鍏嶅煎叆鏁版嵁鏈変腑鏂囦貢鐮佺殑闂棰
1:灝嗘暟鎹緙栫爜鏍煎紡淇濆瓨涓簎tf-8
璁劇疆榛樿ょ紪鐮佷負utf8錛歴et names utf8;
璁劇疆鏁版嵁搴揹b_name榛樿や負utf8:
ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
璁劇疆琛╰b_name榛樿ょ紪鐮佷負utf8:
ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
瀵煎叆錛歀OAD DATA LOCAL INFILE 'C:\\utf8.txt' INTO TABLE yjdb;
2:灝嗘暟鎹緙栫爜鏍煎紡淇濆瓨涓篴nsi(鍗矴BK鎴朑B2312)
璁劇疆榛樿ょ紪鐮佷負gbk錛歴et names gbk;
璁劇疆鏁版嵁搴揹b_name榛樿ょ紪鐮佷負gbk:
ALTER DATABASE `db_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
璁劇疆琛╰b_name榛樿ょ紪鐮佷負gbk:
ALTER TABLE `tb_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
瀵煎叆錛歀OAD DATA LOCAL INFILE 'C:\\gbk.txt' INTO TABLE yjdb;
娉錛1.UTF8涓嶈佸煎叆gbk錛実bk涓嶈佸煎叆UTF8;
2.dos涓嬩笉鏀鎸乁TF8鐨勬樉紺;
涓夈佽В鍐崇綉欏典腑涔辯爜鐨勯棶棰
灝嗙綉絝欑紪鐮佽句負 utf-8,榪欐牱鍙浠ュ吋瀹逛笘鐣屼笂鎵鏈夊瓧絎︺傚傛灉緗戠珯宸茬粡榪愪綔浜嗗ソ涔,宸叉湁寰堝氭棫鏁版嵁,涓嶈兘鍐嶆洿鏀圭畝浣撲腑鏂囩殑璁懼畾,閭d箞寤鴻灝嗛〉闈㈢殑緙栫爜璁句負 GBK, GBK涓嶨B2312鐨勫尯鍒灝卞湪浜:GBK鑳芥瘮GB2312鏄劇ず鏇村氱殑瀛楃,瑕佹樉紺虹畝浣撶爜鐨勭箒浣撳瓧,灝卞彧鑳界敤GBK銆
1.緙栬緫/etc/my.cnf銆,鍦╗mysql]孌靛姞鍏default_character_set=utf8;
2.鍦ㄧ紪鍐機onnection URL鏃訛紝鍔犱笂?useUnicode=true&characterEncoding=utf-8鍙;
3.鍦ㄧ綉欏典唬鐮佷腑鍔犱笂涓涓"set names utf8"鎴栬"set names gbk"鐨勬寚浠わ紝鍛婅瘔MySQL榪炵嚎鍐呭歸兘瑕佷嬌鐢╱tf8鎴栬単bk銆
甯屾湜瀵逛綘鏈夋墍甯鍔┿