線上書籍

Home

[1032]PHP入門

一、 關於phpMyAdmin或Adminer
  1. 要管理MySQL資料庫,需要進到MySQL ll終端機界面,並利用SQL語法,以下指令的方式來操作管理之,因此,透過人家寫好的視覺化界面來操作會更簡單。
  2. phpMyAdmin是一套歷史悠久的MySQL資料管理程式,安裝設定其實有點小麻煩,不過功能齊全,但相對也肥大。後起之秀Adminer(http://adminer.org),只有一個檔案,無須安裝設定即可使用,方便易用,值得推薦!需注意的是,這兩套都不是MySQL,均為一套PHP程式,用理MySQL的成世界面而已。
  3. 打開瀏覽器,輸入「http://163.26.52.243/phpmyadmin」可執行phpMyAdmin。
  4. 輸入「http://163.26.52.243/adminer.php」則可執行Adminer。
二、 注意資料庫的「校對」
  1. 「資料庫」和「資料表」名稱不能以「數字」或特殊符號作為開頭。
  2. MySQL 4.1 以後,建立資料表時,若要使用UTF8,在「校對」選項請選擇「utf8_general_ci」。(latin1_swedish_ci是預設值,記得改掉!)
三、 建立資料表
  1. 登入,選擇「資料庫」,點擊「建立資料表」,輸入資料表名稱,引擎選用「MyISAM」,校對選用「utf8_general_ci」。
  2. 基本動作:設好欄位名稱→指定資料型態(適當的資料類型讓您上天堂!)
    • (1)  若是varchar則一定要設定「長度」,通常建議給到最大255;
    • (2)  若是數字則「屬性」多為「unsigned」,即正整數之意;
    • (3)  若是要當作流水號,則在「附加」選擇AI即「auto_increment」最後指定哪些欄位要當作索引。
四、 MySQL常用資料類型一覽
  1. (M,D):M是資料位數,最大為255;D是小數位數。
  2. []中括號,表示M或D可以省略不寫,不寫的話則以內定範圍為準。
  3. unsigned表示正整數狀態,也就是沒有負數。
  4. zerofill表示位數不足補0,如int(4),存28這個數字,資料庫會將之存成0028。
  5. 日期部份:Y代表的是年,YY代表2位數的年,如97年,YYYY代表4位數的年,如2001年,其餘的M(月)、D(日)依此類推。
  6. 當年份數字在00-69之間,則會被當作2000-2069,若是在70-99之間,則當作1970-1999!
  7. php的時間戳記是unix timestamp是由1970/01/01 00:00累計之今的秒數。而MySQL的時間戳記則是YYYYMMDDHHMMSS,根據M值而有所不同。
  8. Big5中文,一個字佔2位元;UTF-8中文,一個字佔3位元。
     
  類型 bytes 範圍 選項
數字類型 TINYINT(M) 非常小整數 1 -128到127,unsigned狀態則為0到255 unsigned、zerofill
SMALLINT(M) 較小整數 2 -32768到32767,unsigned狀態則為0到65535 unsigned、zerofill
MEDIUMINT(M) 中型整數 3 -8388608到8388607,unsigned狀態則為0到16777215 unsigned、zerofill
INT(M) 標準整數 4 -2147483648到2147483647unsigned狀態則為0到4294967295 unsigned、zerofill
BIGINT(M) 大整數 8 -9223372036854775808到9223372036854775807unsigned狀態則為0到18446744073709551615 unsigned、zerofill
FLOAT(M) 單精確度浮點數 4 FLOAT(M,D)最小非零值:±1.175494351E - 38FLOAT(4)最大非零值:±3.402823466E + 38FLOAT(8)最大非零值:±1.7976931348623157E + 308 zerofill
DOUBLE(M) 雙精確度浮點數 8 最小非零值:±2.2250738585072014E - 308 zerofill
DECIMAL(M,D) M 可變;其值的範圍依賴於M和D zerofill
日期類型 DATE 日期 3 1000-01-01到9999-12-31  
DATETIME 日期時間 8 1000-01-01 00:00:00到9999-12-31 23:59:59  
TIMESTAMP(M) 時間戳記 2,4,6,8,10,12,14 (左) 1970-01-01 00:00:00到2037  
TIME 時間 3 -838:59:59到838:59:59  
YEAR 年度 1 1901到2155  
文字類型 CHAR(M) 固定長度字串 M 1<=M<=255  
VARCHAR(M) 變動長度字串 M+1 1<=M<=255  
TINYTEXT非常小的文本串 M+1 255個字元  
TEXT小文本串 M+2 65535個字元  
MEDIUMTEXT中等文本串 M+3 16777215個字元  
LONGTEXT大文本串 M+4 4294967295個字元  
TINYBLOB超小型BLOB M+1 255個字元  
BLOB小型BLOB M+2 65535個字元  
MEDIUMBLOB中型BLOB M+3 16777215個字元  
LONGBLOB大型BLOB M+4 4294967295個字元  
特殊 ENUM 單選選項 1或2 最多65535個選項  
SET 複選選項 1,2,3,4,8 最多64個選項  
五、 匯出資料表
  1. 為了方便系統重建或轉移,我們可以將資料庫結構匯出,方便下一次安裝。
  2. 點選「匯出」,格式選用「sql」,並句選要匯出的資料表名稱。若有要匯出資料,則資料部份也需打勾(此例不用)
  3. 匯出後是一個xxx.sql檔,此為文字檔,可用任何編輯器開啟,日後易可以方便的進行匯入動作。
  4. 您可以將SQL檔打開,並將一些註解及SET刪除掉。
六、 讓PHP連上MySQL $link=@mysql_connect("localhost","root"," 12345"); if($link){ mysql_query("SET NAMES 'utf8'"); mysql_select_db("test"); }else{ die("無法連上資料庫"); }

 

  1. 用法:int mysql_connect("主機位置","資料庫帳號"," 資料庫密碼");
  2. 範例:$link=mysql_connect("localhost","root","12345");
  3. 該函數會傳回一個int(整數),我們稱之為「連線編號」,其資料型態為:資源。
  4. 只要程式和資料庫都在同一台主機,「主機位置」填入「localhost」即可。
  5. 執行SQL語法:int mysql_query( "SQL語法" [, 連線編號]);
  6. 結束連線可使用:「mysql_close($link);」,不過,其實不用也沒關係。
  7. 讓MySQL可以順利寫入UTF8中文:mysql_query("SET NAMES 'utf8'"); 在連線之後,加入此行即可。
  8. 選擇資料庫:mysql_select_db("資料庫名稱");
七、 新增資料到資料庫
  1. 寫入一筆資料到MySQL中,就要用insert或replace的語法,其用法如下: insert [into] 資料表名稱 [(欄位1,欄位2...)] values (值1,值2...)
  2. insert 改為 replace 則為「取代」之意,亦即若唯一索引的欄位值已存在,則用新值覆蓋舊值。若不存在,則新增。
  3. 可以一次新增多筆: insert [into] 資料表名稱 [(欄位1,欄位2...)] values ( 值 A1, 值 A2... ) , ( 值 B1, 值 B2...) , ( 值 C1 , C2...) , ( 值 D1 , 值 D2...) ;
  4. 欄位或資料表稱的前後可加「`」符號(也可不加),而值為字串時,則一定要加引號(通常為單引號)。
八、 讀取資料庫內容
  1. 要讀出MySQL的資料,那您就要用select這指令。 SELECT 查詢內容 [FROM `資料表名稱` 篩選條件]
  2. 「篩選條件」有以下幾個東西!注意喔!由上到下就是其語法的先後順序喔!您可不能把LIMIT拿到WHERE的前面,那是錯誤的喔!
    • (1)  [where 篩選條件]
    • (2)  [group by 欄位名稱][having group的篩選條件]
    • (3)  [order by {unsigned_integer | 欄位名稱 | formula} [asc | desc] ,...]
    • (4)  [limit [起點,] 筆數]
九、 常和select一起用的PHP的函數
  1. 從資料庫取得的陣列,索引值可以是數字或字串(即欄位名稱)。$row[0] 或 $row["title"] $row=mysql_fetch_array();
  2. 從資料庫取得的陣列,索引值只能是數字(數字索引)。$row[0],通常搭配list()來將陣列值套用到指定變數上。 $row=mysql_fetch_row();
  3. 從資料庫取得的陣列,索引值只能是字串(關聯索引)。$row["title"] $row=mysql_fetch_assoc();

十、 常和GROUP BY搭配使用的MySQL函數
  • COUNT():計算數目
  • AVG():計算GROUP的平均值
  • MIN():找出最小值
  • MAX():找出最大值
  • SUM():總和