Jill 筆記
:::
:::
所有書籍
「PHP從入門到放棄實戰班」目錄
MarkDown
6. 資料庫規劃
1. 實戰之前
1-1 安裝開發環境
1-2 上課範例
2. HTML基礎
2-1 index.html
3. BootStrap響應式框架
3-1 格線系統
3-2 表格
3-3 導覽列
3-4 表單
4. PHP基本語法
4-1 註解
4-2 PHP資訊頁
4-3 PHP變數與陣列
4-4 各種訊息整理
5. 套用Smarty樣板
5-1 使用 Smarty
5-2 index.php
5-3 templates/index.tpl
5-4 php二維陣列
6. 資料庫規劃
6-1 MySQL常用資料類型一覽
6-2 讓PHP7連線到MySQL資料庫
7. PHP程式整併與樣板流程判斷
7-1 PHP條件判斷
7-2 PHP的變數過濾
7-3 練習自訂函數
7-4 templates/index.tpl
7-5 index.php
8. 製作表單並寫入資料到資料庫
8-1 index.php
8-2 post_form.tpl
8-2-1 post_form.tpl
8-3 templates/index.tpl
8-4 footer.php
9. 資料庫讀取
9-1 幾個常用的迴圈用法
9-2 讀出資料的安全性過濾並顯示
9-3 想想寫入還有什麼問題?
9-4 templates/post_form.tpl
9-5 index.php
9-6 templates/index.tpl
10. 編輯表單、刪除資料
10-1 顯示單筆資料
10-2 刪除事項
10-3 index.php
10-4 templates/post_form.tpl
10-5 templates/index.tpl
10-6 templates/show_one.tpl
11. 其他細節處理(補充)
11-1 小月曆
11-2 加入所見即所得編輯器
11-3 表單驗證
11-4 分頁功能
12. 練習
6-2 讓PHP7連線到MySQL資料庫
PHP從入門到放棄實戰班 ============ ### 一、參考手冊
### 二、數字類型 1. 整數型:` Tinyint/ smallint/ mediumint/int/ bigint(M) unsigned zerofill` - 對於int型 : 占的位元組越多,存儲的範圍也越大。 - Tinyint 1個位元組 8個位元 - 可選參數:XXint(M) unsigned zerofill 例:age tinyint(4) unsigned,或 stunum smallint(6) zerofill Unsigned:代表此列為無符號類型,會影響到列的存儲範圍(範圍從0開始) (不加unsinged,則該列預設是有符號類型,範圍從負數開始) - zerofill:代表0填充,即:如果該數字不足參數M位元,則自動補0,補夠M位。 - 如果沒有zerofill屬性,單獨的參數M,沒有任何意義.。 - 如果設置某列為zerofill,則該列已經預設為 unsigned,無符號類型。 2. 小數型:`Float(M,D),DOUBLE(M),decimal(M,D)` - M代表總位數,而D代表小數位。(小數右邊的位數) - 浮點數能存![10^{38}](http://latex.codecogs.com/gif.latex?10%5E%7B38%7D) ~ ![10^{-38}](http://latex.codecogs.com/gif.latex?10%5E%7B-38%7D) ,float M<=24, 佔4個位元組,double占8位元組。 - **DECIMAL**(M,D) ,是把整數部分,和小數部分,分開存儲的, 比float精確。 - 例:money float(10,2) 、amount decimal(10,2) - 例:total double(20,2) 、amount2 decimal(20,2) - float 最大的問題是有效位數只有7個,其他會亂塞值,所以只能用在精準度要求不高的地方,避免使用。 - double 適合一般般數理運算使用,可以存很大的數字,但有效位數約17個,mysql內建的數學函式也是以此型態作為運算基準。 - decimal 是精準數值,占用空間比較大,適合算和錢有關的,或是需要存較精準的數字。 ### 三、文字類型 1. CHAR(M) 固定長度字串: - M 代表寬度,0<=M<=255之間。 - 例:Char(10) ,則能輸入10個字元。 - 如果實際存儲內容不足M個,則後面加空格補齊;取出來的時候,再把後面的空格去掉。所以,如果內容最後有空格,將會被清除。 2. VARCHAR(M) 變動長度字串: - M 代表寬度,0<=M<=65535之間。 - 例:Varchar(10) ,則能輸入10個字元。 - 實際存儲內容不足M個,以實際佔的字元為主,如果內容最後有空格,不會被清除。 3. char(M),varchar(M)限制的是字元,不是位元組。 - 例:char(4),varchar(4) 比較英文及中文字。 4. 差異: - char(M)存取速度快,但浪費空間存儲。 - 使用時機:用戶名用 char(10),個人簡介 varchar(140) - ```markup select concat(char,'!'),concat(varchar,'!') from table; ``` 5. Text:文本類型,可以存比較大的文本段,搜索速度稍慢 - 如果不是特別大的內容,建議用char,varchar來代替。 - 不用加預設值 (加了也沒用)。 ### 四、日期時間類型 1. Date:日期 - 格式:1998-12-31 - 範圍:1000/01/01 ,9999/12/31 2. Time 時間 - 格式:13:56:23 - 範圍: -838:59:59 -->838:59:59 3. datetime時期時間 - 格式:1998-12-31 13:56:23 - 範圍:1000/01//01 00:00:00 ---> 9999:12:31 23:59:59 4. timestamp 時間戳記 - 1970-01-01 00:00:00 到當前的秒數。 - 一般存註冊時間,商品發佈時間等,並不是用datetime存儲,而是用時間戳記。因為datetime雖然直觀,但計算不便。 ### 五、列表整理
類型
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<=65535
**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個選項