第1章初識PHP11.1PHP的發展1
1.1.1PHP的概念1
1.1.2PHP的發展歷程1
1.1.3PHP語言的優勢2
1.2PHP的應用領域3
1.3PHP7的新特點3
1.4PHP常用開發工具5
1.4.1PHP代碼開發工具5
1.4.2網頁設計工具6
1.4.3文本編輯工具6
1.5高手私房菜8
1.6經典習題8
第2章配置PHP7服務器環境9
2.1PHP服務器概述9
2.2安裝PHP7前的準備工作10
2.2.1軟硬件環境10
2.2.2獲取PHP7安裝資源包10
2.3PHP7+Apache服務器的環境搭建12
2.3.1Apache簡介12
2.3.2關閉原有的網站服務器13
2.3.3安裝Apache13
2.3.4將PHP與Apache建立關聯14
2.4PHP環境的集成軟件16
2.5實戰演練——我的第一個PHP程序19
2.6高手私房菜20
2.7經典習題20
第3章PHP7的基本語法21
3.1PHP標識符21
3.1.1短風格21
3.1.2script風格21
3.1.3ASP風格22
3.2編碼規范22
3.2.1什么是編碼規范22
3.2.2PHP中的編碼規范22
3.3常量24
3.3.1聲明和使用常量24
3.3.2內置常量25
3.4變量27
3.4.1PHP中的變量聲明27
3.4.2可變變量與變量的引用28
3.4.3變量作用域(variablescope)29
3.4.4變量的銷毀32
3.5數據的類型33
3.5.1什么是類型33
3.5.2整型(integer)34
3.5.3浮點型(float或double)34
3.5.4布爾型(boolean)34
3.5.5字符串型(string)34
3.5.6數組型(array)35
3.5.7對象型(object)37
3.5.8NULL型38
3.5.9資源類型(resource)38
3.5.10數據類型之間的相互轉換38
3.6標量類型的聲明39
3.7運算符40
3.7.1算術運算符40
3.7.2字符串運算符41
3.7.3賦值運算符42
3.7.4比較運算符42
3.7.5邏輯運算符43
3.7.6按位運算符44
3.7.7否定控制運算符45
3.7.8錯誤控制運算符45
3.7.9三元運算符46
3.7.10運算符的優先級和結合規則46
3.8表達式46
3.9實戰演練——創建多維數組47
3.10高手私房菜47
3.11經典習題48
第4章PHP語言結構49
4.1內置函數49
4.2自定義函數50
4.2.1自定義和調用函數50
4.2.2向函數傳遞參數值50
4.2.3向函數傳遞參數引用51
4.2.4從函數中返回值52
4.2.5對函數的引用53
4.2.6對函數取消引用54
4.3包含文件54
4.3.1require和include54
4.3.2include_once和require_once55
4.4流程控制概述55
4.5條件控制結構56
4.5.1單一條件分支結構(if語句)56
4.5.2雙向條件分支結構(if…else語句)57
4.5.3多向條件分支結構(elseif語句)58
4.5.4多向條件分支結構(switch語句)59
4.6循環控制結構60
4.6.1while循環語句60
4.6.2do…while循環語句61
4.6.3for循環語句62
4.6.4foreach循環語句63
4.6.5流程控制的另一種書寫格式64
4.6.6使用break/continue語句跳出循環66
4.7實戰演練1——條件分支結構綜合應用67
4.8實戰演練2——循環控制結構綜合應用69
4.9高手私房菜70
4.10經典習題70
第5章字符串和正則表達式71
5.1字符串的單引號和雙引號71
5.2字符串的連接符72
5.3字符串的基本操作74
5.3.1手動和自動轉義字符串中的字符74
5.3.2計算字符串的長度74
5.3.3字符串單詞統計75
5.3.4清理字符串中的空格75
5.3.5字符串的切分與組合76
5.3.6字符串子串的截取77
5.3.7字符串子串替換78
5.3.8字符串查找78
5.3.9大小寫轉換79
5.4什么是正則表達式80
5.5正則表達式語法規則80
5.6實戰演練——創建酒店系統在線訂房表85
5.7高手私房菜88
5.8經典習題89
第6章PHP數組90
6.1什么是數組90
6.2數組的類型90
6.2.1數字索引數組90
6.2.2關聯索引數組92
6.3PHP常量數組92
6.4數組構造93
6.4.1一維數組93
6.4.2多維數組93
6.5遍歷數組95
6.5.1遍歷一維數字索引數組95
6.5.2遍歷一維聯合索引數組96
6.5.3遍歷多維數組97
6.6數組排序98
6.6.1一維數組排序98
6.6.2多維數組排序100
6.7字符串與數組的轉換101
6.8向數組中添加和刪除元素102
6.8.1向數組中添加元素102
6.8.2從數組中刪除元素103
6.9查詢數組中指定元素105
6.10統計數組元素個數106
6.11刪除數組中的重復元素108
6.12調換數組中的鍵值和元素值108
6.13實戰演練——數組的序列化109
6.14高手私房菜110
6.15經典習題110
第7章時間和日期111
7.1系統時區設置111
7.1.1時區劃分111
7.1.2時區設置111
7.2PHP日期和時間函數112
7.2.1關于UNIX時間戳112
7.2.2獲取當前時間戳112
7.2.3獲取當前日期和時間113
7.2.4使用時間戳獲取日期信息113
7.2.5檢驗日期的有效性116
7.2.6輸出格式化時間戳的日期和時間116
7.2.7顯示本地化的日期和時間118
7.2.8將日期和時間解析為UNIX時間戳119
7.2.9日期和時間在PHP和MySQL數據格式之間的轉換119
7.3實戰演練1——比較兩個時間的大小120
7.4實戰演練2——實現倒計時功能120
7.5高手私房菜121
7.6經典習題121
第8章面向對象編程122
8.1類和對象的介紹122
8.2PHP中類的操作123
8.2.1類的聲明123
8.2.2成員屬性124
8.2.3成員方法124
8.2.4類的實例化124
8.2.5訪問類中的成員屬性和方法125
8.3構造方法和析構方法127
8.4訪問方法129
8.5類的繼承130
8.6高級特性131
8.6.1靜態屬性和方法131
8.6.2final類和方法132
8.7抽象類和接口134
8.7.1抽象類134
8.7.2接口135
8.8面向對象的多態性136
8.8.1通過繼承實現多態137
8.8.2通過接口實現多態138
8.9高手私房菜139
8.10經典習題139
第9章錯誤處理和異常處理140
9.1常見的錯誤和異常140
9.2錯誤處理143
9.2.1php.ini中的錯誤處理機制143
9.2.2應用DIE語句調試144
9.2.3自定義錯誤和錯誤觸發器145
9.2.4錯誤記錄148
9.3異常處理149
9.3.1異常的基本處理方法149
9.3.2自定義的異常處理器151
9.3.3處理多個異常152
9.3.4設置頂層異常處理器153
9.4實戰演練——處理異常或錯誤154
9.5高手私房菜155
9.6經典習題156
第10章PHP與Web頁面的交互157
10.1使用動態內容157
10.2表單與PHP158
10.3表單設計158
10.3.1表單基本結構159
10.3.2文本框159
10.3.3選項框160
10.3.4單選按鈕162
10.3.5下拉列表163
10.3.6重置按鈕165
10.3.7提交按鈕165
10.4傳遞數據的兩種方法168
10.4.1用POST方式傳遞數據168
10.4.2用GET方式傳遞數據168
10.5PHP獲取表單傳遞數據的方法170
10.6PHP對URL傳遞的參數進行編碼170
10.7實戰演練——PHP與Web表單的綜合應用171
10.8高手私房菜173
10.9經典習題173
第11章PHP文件與目錄操作174
11.1文件操作174
11.1.1文件數據的寫入174
11.1.2文件數據的讀取178
11.2目錄操作179
11.3文件的上傳184
11.4實戰演練——編寫文本類型的訪客計算器187
11.5高手私房菜188
11.6經典習題188
第12章圖形圖像處理189
12.1在PHP中加載GD庫189
12.2圖形圖像的典型應用案例191
12.2.1創建一個簡單的圖像191
12.2.2使用GD2函數在照片上添加文字193
12.2.3使用TrueType字體處理中文生成的圖片194
12.3Jpgraph庫的使用196
12.3.1Jpgraph的安裝196
12.3.2Jpgraph的配置197
12.3.3制作柱形與折線統計圖197
12.3.4制作圓形統計圖199
12.4實戰演練——制作3D餅形統計圖201
12.5高手私房菜203
12.6經典習題203
第13章Cookie和會話管理204
13.1Cookie基本操作204
13.1.1什么是Cookie204
13.1.2創建Cookie205
13.1.3讀取Cookie205
13.1.4刪除Cookie206
13.2認識Session208
13.2.1什么是Session208
13.2.2Session的基本功能208
13.2.3Cookie與Session208
13.2.4在Cookie或URL中存儲SessionID209
13.3會話管理209
13.3.1創建會話209
13.3.2注冊會話變量210
13.3.3使用會話變量210
13.3.4注銷和銷毀會話變量211
13.4實戰演練——會話管理的綜合應用212
13.5高手私房菜213
13.6經典習題214
第14章MySQL數據庫基礎215
14.1什么是MySQL215
14.1.1客戶機-服務器軟件215
14.1.2MySQL版本216
14.1.3MySQL的優勢216
14.2啟動服務并登錄MySQL數據庫217
14.2.1啟動MySQL服務217
14.2.2登錄MySQL數據庫218
14.2.3配置Path變量220
14.3MySQL常用圖形管理工具221
14.4高手私房菜222
14.5經典習題222
第15章數據庫的基本操作223
15.1創建數據庫223
15.2刪除數據庫224
15.3實戰演練——數據庫的創建和刪除225
15.4高手私房菜227
15.5經典習題228
第16章數據表的基本操作229
16.1創建數據表229
16.1.1創建表的語法形式229
16.1.2使用主鍵約束230
16.1.3使用外鍵約束232
16.1.4使用非空約束233
16.1.5使用唯一性約束233
16.1.6使用默認約束234
16.1.7設置表的屬性值自動增加235
16.2查看數據表結構236
16.2.1查看表基本結構語句DESCRIBE236
16.2.2查看表詳細結構語句SHOWCREATETABLE237
16.3修改數據表238
16.3.1修改表名238
16.3.2修改字段的數據類型239
16.3.3修改字段名240
16.3.4添加字段241
16.3.5刪除字段243
16.3.6修改字段的排列位置244
16.3.7更改表的存儲引擎245
16.3.8刪除表的外鍵約束246
16.4刪除數據表247
16.4.1刪除沒有被關聯的表248
16.4.2刪除被其他表關聯的主表248
16.5實戰演練——數據表的基本操作250
16.6高手私房菜258
16.7經典習題258
第17章數據的基本操作260
17.1插入數據260
17.1.1為表的所有字段插入數據260
17.1.2為表的指定字段插入數據262
17.1.3同時插入多條記錄263
17.2更新數據265
17.3刪除數據267
17.4查詢數據269
17.4.1查詢所有字段272
17.4.2查詢指定字段273
17.4.3查詢指定記錄274
17.4.4帶IN關鍵字的查詢276
17.4.5帶BETWEENAND的范圍查詢278
17.4.6帶LIKE的字符匹配查詢279
17.4.7查詢空值281
17.4.8帶AND的多條件查詢281
17.4.9帶OR的多條件查詢282
17.4.10查詢結果不重復284
17.4.11對查詢結果排序285
17.5實戰演練——數據表綜合應用案例289
17.6高手私房菜297
17.7經典習題297
第18章數據庫的備份與還原299
18.1數據備份299
18.1.1使用MySQLdump命令備份299
18.1.2直接復制整個數據庫目錄305
18.1.3使用MySQLhotcopy工具快速備份306
18.2數據恢復306
18.2.1使用MySQL命令恢復306
18.2.2直接復制到數據庫目錄307
18.2.3MySQLhotcopy快速恢復308
18.3數據庫遷移308
18.3.1相同版本的MySQL數據庫之間的遷移308
18.3.2不同版本的MySQL數據庫之間的遷移309
18.3.3不同數據庫之間的遷移309
18.4表的導出和導入309
18.4.1使用SELECTI…INTOOUTFILE導出文本文件309
18.4.2使用MySQLdump命令導出文本文件312
18.4.3使用MySQL命令導出文本文件315
18.4.4使用LOADDATAINFILE方式導入文本文件318
18.4.5使用MySQLimport命令導入文本文件320
18.5實戰演練——數據的備份與恢復322
18.6高手私房菜325
18.7經典習題326
第19章PHP操作MySQL數據庫327
19.1PHP訪問MySQL數據庫的一般步驟327
19.2連接數據庫前的準備工作327
19.3訪問數據庫328
19.3.1使用mysqli_connect()函數連接MySQL服務器329
19.3.2使用mysqli_select_db()函數更改默認的數據庫330
19.3.3使用mysqli_close()函數關閉MySQL連接331
19.3.4使用mysqli_query()函數執行SQL語句331
19.3.5獲取查詢結果集中的記錄數332
19.3.6獲取結果集的一條記錄作為枚舉數組333
19.3.7獲取結果集的記錄作為關聯數組334
19.3.8獲取結果集中的記錄作為對象334
19.3.9使用mysqli_fetch_array()函數獲取結果集記錄335
19.3.10使用mysqli_free_result()函數釋放資源335
19.4實戰演練1——PHP操作數據庫336
19.5實戰演練2——使用insert語句動態添加用戶信息337
19.6實戰演練3——使用select語句查詢數據信息339
19.7高手私房菜341
19.8經典習題341
第20章新聞發布系統數據庫設計342
20.1系統概述342
20.2系統功能343
20.3數據庫設計和實現343
20.3.1設計表343
20.3.2設計索引348
20.3.3設計視圖348
20.3.4設計觸發器349
第21章PHP+MySQL開發論壇實戰350
21.1網站的需求分析350
21.1.1需求分析350
21.1.2網站功能模塊分析350
21.2數據庫分析351
21.2.1分析數據庫351
21.2.2創建數據表351
21.3論壇的代碼實現352
21.3.1數據庫連接相關文件352
21.3.2論壇主頁面359
21.3.3新用戶注冊頁面364
21.3.4論壇帖子的相關頁面367
21.3.5后臺管理系統的相關頁面378