PHP與MySQL是Web應(yīng)用系統(tǒng)開發(fā)技術(shù)的經(jīng)典組合,具有開放源代碼、支持多種操作系統(tǒng)平臺等特點,被國內(nèi)外眾多網(wǎng)站廣泛采用,具有很強(qiáng)的實用性。本書由淺入深、循序漸進(jìn),系統(tǒng)地介紹了PHP的相關(guān)知識及其在Web應(yīng)用程序開發(fā)中的關(guān)鍵技術(shù)。全書共14章,包括PHP概述與開發(fā)運(yùn)行環(huán)境搭建、PHP語法基礎(chǔ)、PHP流程控制語句、PHP函數(shù)、PHP數(shù)組應(yīng)用、Web互動與會話控制技術(shù)、MySQL數(shù)據(jù)庫、PHP操作MySQL數(shù)據(jù)庫、PHP面向?qū)ο缶幊、基于PDO數(shù)據(jù)庫抽象層、PHP與MVC開發(fā)模式、文件和目錄操作、PHP圖形圖像處理、程序調(diào)試與錯誤處理。 本書內(nèi)容豐富、講解深入,適用于初、中級PHP用戶,既可以作為高等學(xué)校"Web程序設(shè)計”"網(wǎng)站開發(fā)與設(shè)計”課程的教材,又可以作為Web應(yīng)用程序開發(fā)人員的參考用書。
李輝,博士,中國農(nóng)業(yè)大學(xué)農(nóng)業(yè)大數(shù)據(jù)實驗室主任,教育部評估中心工程教育專業(yè)認(rèn)證專家組成員,主要從事大數(shù)據(jù)技術(shù)應(yīng)用、高等教育教學(xué)等方面的研究工作,主講《大數(shù)據(jù)技術(shù)及應(yīng)用概論》等課程,發(fā)表了《本科大數(shù)據(jù)實驗平臺及資源建設(shè)的思考與探索》等多篇教育教學(xué)相關(guān)論文,主編了《數(shù)據(jù)庫系統(tǒng)原理及MySQL應(yīng)用教程》等教材,建設(shè)了農(nóng)業(yè)大數(shù)據(jù)實驗室,搭建了大數(shù)據(jù)教學(xué)實驗實訓(xùn)平臺,完成了數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)主專業(yè)和雙學(xué)位專業(yè)人才培養(yǎng)方案的制定工作。目前正在開展教育部高教司產(chǎn)學(xué)合作協(xié)同育人項目 "基于大數(shù)據(jù)的分布式架構(gòu)應(yīng)用課程群開發(fā)” 、"校企共建大數(shù)據(jù)聯(lián)合實驗室項目”以及"基于可視化的農(nóng)產(chǎn)品安全大數(shù)據(jù)分析系統(tǒng)研究”、"基于全景技術(shù)的實時可視化互動農(nóng)業(yè)系統(tǒng)應(yīng)用與示范”等課題的研究工作。參與國家科技支撐計劃課題和公益性行業(yè)(農(nóng)業(yè))科研專項縱向課題研究10余項,發(fā)表論文20多篇,申請軟件著作權(quán)20多個,申請專利3項。
目錄
第1章 PHP概述與開發(fā)運(yùn)行環(huán)境搭建 1
1.1 Web技術(shù)與PHP 1
1.1.1 Web技術(shù) 1
1.1.2 PHP概述 3
1.1.3 PHP運(yùn)行環(huán)境 4
1.1.4 PHP的工作原理 6
1.1.5 如何學(xué)好PHP編程 7
1.2 網(wǎng)頁的前端技術(shù) 7
1.2.1 HTML基礎(chǔ)知識 7
1.2.2 HTML表單 12
1.2.3 表單數(shù)據(jù)的接收 17
1.3 集成開發(fā)環(huán)境搭建 18
1.3.1 PHP運(yùn)行環(huán)境XAMPP的安裝 18
1.3.2 PHP開發(fā)常見的編輯工具 22
1.3.3 NetBeans的安裝和使用 23
1.3.4 PHP程序開發(fā)流程 27
思考與練習(xí) 27
第2章 PHP語法基礎(chǔ) 29
2.1 PHP基本語法 29
2.1.1 PHP標(biāo)記 29
2.1.2 編碼規(guī)范 30
2.1.3 代碼注釋 33
2.1.4 PHP語句及語句塊 34
2.1.5 PHP標(biāo)識符與關(guān)鍵字 35
2.1.6 PHP大小寫敏感 35
2.2 PHP常量 36
2.2.1 聲明和使用常量 36
2.2.2 預(yù)定義常量 38
2.3 PHP變量 39
2.3.1 聲明變量 39
2.3.2 變量賦值 40
2.3.3 可變變量 41
2.3.4 外部變量 42
2.3.5 變量或常量數(shù)據(jù)類型查看函數(shù) 42
2.4 PHP數(shù)據(jù)類型 43
2.4.1 標(biāo)量數(shù)據(jù)類型 44
2.4.2 復(fù)合數(shù)據(jù)類型 48
2.4.3 特殊數(shù)據(jù)類型 50
2.4.4 偽類型 51
2.4.5 數(shù)據(jù)類型轉(zhuǎn)換 52
2.4.6 檢測數(shù)據(jù)類型 54
2.4.7 PHP數(shù)據(jù)的輸出 54
2.5 PHP運(yùn)算符 56
2.5.1 算術(shù)運(yùn)算符 56
2.5.2 字符串運(yùn)算符 57
2.5.3 賦值運(yùn)算符 57
2.5.4 自加或自減運(yùn)算符 58
2.5.5 邏輯運(yùn)算符 59
2.5.6 比較運(yùn)算符 60
2.5.7 條件運(yùn)算符 61
2.5.8 NULL合并運(yùn)算符 61
2.5.9 組合比較運(yùn)算符 61
2.5.10 位運(yùn)算符 62
2.5.11 錯誤控制運(yùn)算符 62
2.5.12 運(yùn)算符的使用規(guī)則 63
2.6 表達(dá)式與語句 63
思考與練習(xí) 63
第3章 PHP流程控制語句 66
3.1 PHP的三種控制結(jié)構(gòu) 66
3.2 選擇結(jié)構(gòu)語句 68
3.2.1 if語句 68
3.2.2 switch語句 71
3.3 循環(huán)結(jié)構(gòu)語句 72
3.3.1 while循環(huán)語句 72
3.3.2 do-while循環(huán)語句 73
3.3.3 for循環(huán)語句 75
3.3.4 foreach循環(huán)語句 76
3.4 跳轉(zhuǎn)語句 77
3.4.1 break語句 77
3.4.2 continue語句 78
3.4.3 goto語句 78
3.4.4 return語句 79
3.4.5 exit語句 79
3.5 流程替代語法 80
3.6 PHP文件間包含函數(shù)的使用 81
3.6.1 include()函數(shù) 81
3.6.2 include()函數(shù)與require()函數(shù)的區(qū)別 82
3.6.3 include_once()函數(shù)和require_once()函數(shù) 83
思考與練習(xí) 84
第4章 PHP函數(shù) 86
4.1 函數(shù) 86
4.1.1 定義和調(diào)用函數(shù) 86
4.1.2 在函數(shù)間傳遞參數(shù) 88
4.1.3 從函數(shù)中返回值 89
4.1.4 變量函數(shù) 90
4.1.5 對函數(shù)的引用 91
4.1.6 取消引用 91
4.1.7 變量作用域 92
4.1.8 函數(shù)的高級調(diào)用 94
4.2 PHP變量函數(shù)庫 98
4.3 字符串與PHP字符串函數(shù)庫 99
4.3.1 初識字符串 99
4.3.2 去除字符串首尾空白字符和特殊字符 99
4.3.3 截取字符串 100
4.3.4 分割、合成字符串 101
4.3.5 MD5加密函數(shù) 102
4.4 PHP日期時間函數(shù)庫 103
4.4.1 系統(tǒng)時區(qū)設(shè)置 103
4.4.2 格式化日期和時間 103
4.4.3 獲取日期和時間信息 104
4.5 正則表達(dá)式在PHP中的應(yīng)用 105
4.5.1 正則表達(dá)式使用的常用函數(shù) 105
4.5.2 正則表達(dá)式的基本語法 107
4.5.3 PCRE兼容正則表達(dá)式函數(shù) 111
4.5.4 正則表達(dá)式的其他特性 114
思考與練習(xí) 116
第5章 PHP數(shù)組應(yīng)用 118
5.1 數(shù)組的基本概念 118
5.1.1 為什么引入數(shù)組 118
5.1.2 數(shù)組的概念 119
5.1.3 數(shù)組的類型 119
5.2 數(shù)組創(chuàng)建和刪除 120
5.2.1 創(chuàng)建數(shù)組 120
5.2.2 數(shù)組刪除 123
5.3 數(shù)組遍歷和輸出 123
5.3.1 訪問數(shù)組元素 123
5.3.2 數(shù)組遍歷方式 125
5.3.3 通過數(shù)組指針遍歷數(shù)組 128
5.3.4 數(shù)組元素輸出 129
5.4 數(shù)組的處理函數(shù) 129
5.4.1 獲。ㄒ瞥⿺(shù)組中的最后或開頭一個元素 129
5.4.2 去除數(shù)組中的重復(fù)元素 130
5.4.3 獲取數(shù)組中指定元素的鍵名 131
5.4.4 數(shù)組鍵與值的排序 132
5.4.5 字符串與數(shù)組的轉(zhuǎn)換 132
5.5 預(yù)定義數(shù)組 133
思考與練習(xí) 137
第6章 Web互動與會話控制技術(shù) 139
6.1 Web服務(wù)器交互原理 139
6.2 頁面間的參數(shù)傳遞方式 139
6.3 瀏覽器端數(shù)據(jù)提交方式 140
6.3.1 GET提交方式 140
6.3.2 POST提交方式 141
6.3.3 兩種提交方式的比較 142
6.3.4 PHP獲取表單信息 142
6.3.5 URL操作 146
6.4 在PHP腳本中使用JavaScript編程 147
6.4.1 JavaScript腳本的使用 147
6.4.2 數(shù)據(jù)類型和變量 148
6.4.3 彈出警告對話框 148
6.4.4 彈出確認(rèn)對話框 149
6.4.5 document對象 149
6.4.6 彈出新窗口 151
6.5 Cookie技術(shù) 152
6.5.1 了解Cookie 152
6.5.2 創(chuàng)建Cookie 153
6.5.3 讀取Cookie 154
6.5.4 刪除Cookie 155
6.5.5 Cookie的生命周期 155
6.6 Session技術(shù) 156
6.6.1 了解Session 157
6.6.2 創(chuàng)建Session 157
6.6.3 使用Session設(shè)置時間 159
6.7 Session高級應(yīng)用 161
6.7.1 Session臨時文件 161
6.7.2 Session緩存 161
6.7.3 Session綜合應(yīng)用案例 162
6.8 PHP頁面跳轉(zhuǎn) 164
6.8.1 header()函數(shù) 164
6.8.2 meta標(biāo)簽 164
6.8.3 JavaScript腳本 165
6.8.4 在HTML標(biāo)記中實現(xiàn)跳轉(zhuǎn) 165
思考與練習(xí) 165
第7章 MySQL數(shù)據(jù)庫 168
7.1 MySQL概述 168
7.2 操作MySQL數(shù)據(jù)庫 169
7.3 操作MySQL數(shù)據(jù)表 170
7.3.1 創(chuàng)建數(shù)據(jù)表 170
7.3.2 查看數(shù)據(jù)表 171
7.3.3 修改數(shù)據(jù)表 171
7.3.4 重命名數(shù)據(jù)表 172
7.3.5 刪除數(shù)據(jù)表 172
7.4 操作MySQL數(shù)據(jù) 173
7.4.1 向數(shù)據(jù)表中添加數(shù)據(jù) 173
7.4.2 更新數(shù)據(jù)表中的數(shù)據(jù) 173
7.4.3 刪除數(shù)據(jù)表中的數(shù)據(jù) 174
7.4.4 查詢數(shù)據(jù)表中的數(shù)據(jù) 174
7.5 MySQL數(shù)據(jù)類型 177
7.5.1 數(shù)字類型 177
7.5.2 字符串類型 177
7.5.3 日期和時間類型 178
7.6 phpMyAdmin圖形化管理工具 178
7.6.1 管理數(shù)據(jù)庫 178
7.6.2 管理數(shù)據(jù)表 180
7.6.3 管理數(shù)據(jù)記錄 181
7.6.4 導(dǎo)入/導(dǎo)出數(shù)據(jù) 186
思考與練習(xí) 187
第8章 PHP操作MySQL數(shù)據(jù)庫 191
8.1 PHP操作MySQL數(shù)據(jù)庫的一般步驟 191
8.2 PHP顯示MySQL數(shù)據(jù)庫數(shù)據(jù)的函數(shù)應(yīng)用 192
8.2.1 數(shù)據(jù)準(zhǔn)備 192
8.2.2 建立與MySQL服務(wù)器的連接 193
8.2.3 顯示MySQL數(shù)據(jù)庫中的數(shù)據(jù) 195
8.2.4 數(shù)據(jù)分頁顯示的原理及實現(xiàn) 203
8.3 PHP更新MySQL數(shù)據(jù)庫數(shù)據(jù)的函數(shù)應(yīng)用 206
8.3.1 從頁面獲取數(shù)據(jù)并插入數(shù)據(jù)庫 206
8.3.2 根據(jù)表單內(nèi)容修改數(shù)據(jù)庫數(shù)據(jù) 208
8.3.3 刪除數(shù)據(jù)庫數(shù)據(jù) 212
8.4 預(yù)處理與參數(shù)綁定 213
8.4.1 什么是預(yù)處理 213
8.4.2 預(yù)處理的實現(xiàn) 213
8.5 PHP操作MySQL數(shù)據(jù)庫常見錯誤信息及分析 215
8.6 mysql()函數(shù)與mysqli()函數(shù)連接數(shù)據(jù)庫的區(qū)別與用法 216
思考與練習(xí) 217
第9章 PHP面向?qū)ο缶幊?219
9.1 類與對象 219
9.2 類的聲明 221
9.2.1 類的定義 221
9.2.2 成員屬性 222
9.2.3 成員方法 222
9.3 類的實例化 223
9.3.1 創(chuàng)建(實例化)對象 223
9.3.2 訪問類中成員 224
9.3.3 特殊的訪問方法:“$this”和“::” 225
9.3.4 構(gòu)造方法(函數(shù))和析構(gòu)方法(函數(shù)) 226
9.4 面向?qū)ο蟮姆庋b性 228
9.4.1 public關(guān)鍵字 229
9.4.2 private關(guān)鍵字 229
9.4.3 protected關(guān)鍵字 229
9.4.4 靜態(tài)屬性和靜態(tài)方法 230
9.5 面向?qū)ο蟮睦^承性 231
9.5.1 類的繼承:extends關(guān)鍵字 232
9.5.2 類的繼承:parent::關(guān)鍵字 232
9.5.3 覆蓋父類方法 233
9.5.4 final關(guān)鍵字 234
9.5.5 trait機(jī)制 235
9.6 抽象類和接口 235
9.6.1 抽象類 236
9.6.2 接口 237
9.7 面向?qū)ο蟮亩鄳B(tài)性 238
9.7.1 通過繼承實現(xiàn)多態(tài) 239
9.7.2 通過接口實現(xiàn)多態(tài) 239
9.8 面向?qū)ο蟮哪g(shù)方法 240
9.8.1 __set()方法和__get()方法 240
9.8.2 __isset()方法和__unset()方法 241
9.8.3 __call()方法 242
9.8.4 __toString()方法 242
9.8.5 __autoload()方法 243
9.8.6 __clone()方法 244
9.8.7 自動加載類:spl_autoload_register()方法 244
9.9 兩種常見的設(shè)計模式 246
思考與練習(xí) 248
第10章 PDO數(shù)據(jù)庫抽象層 250
10.1 PDO概述 250
10.2 PDO連接數(shù)據(jù)庫 252
10.3 在PDO中執(zhí)行SQL語句 253
10.3.1 PDO::exec()方法 253
10.3.2 PDO::query()方法 254
10.3.3 預(yù)處理語句prepare()和execute() 255
10.4 在PDO中獲取結(jié)果集 257
10.4.1 fetch()方法 257
10.4.2 fetchAll()方法 259
10.4.3 fetchColumn()方法 260
10.5 在PDO中捕獲SQL語句的錯誤 261
10.5.1 默認(rèn)模式:PDO::ERRMODE_SILENT 261
10.5.2 警告模式:PDO::ERRMODE_WARNING 262
10.5.3 異常模式:PDO::ERRMODE_EXCEPTION 263
10.6 PDO中的錯誤處理 265
10.6.1 errorCode()方法 265
10.6.2 errorInfo()方法 266
思考與練習(xí) 267
第11章 PHP與MVC開發(fā)模式 269
11.1 MVC概述 269
11.1.1 MVC介紹 269
11.1.2 MVC的組成 270
11.2 PHP開發(fā)中的模板技術(shù) 271
11.2.1 模板與模板引擎 271
11.2.2 在PHP程序中使用模板 272
11.2.3 Smarty模板引擎 273
11.3 基于MVC的PHP開發(fā)框架簡介 275
11.4 CodeIgniter框架應(yīng)用 277
11.4.1 CodeIgniter的特點 278
11.4.2 安裝CodeIgniter 278
11.4.3 CodeIgniter的Controller 278
11.4.4 CodeIgniter的Model 280
11.4.5 CodeIgniter的View 280
11.5 ThinkPHP框架的應(yīng)用 282
11.5.1 ThinkPHP的安裝與項目創(chuàng)建 282
11.5.2 項目的創(chuàng)建 283
11.5.3 項目的配置 284
11.5.4 控制器類的創(chuàng)建 285
11.5.5 模型類的創(chuàng)建 287
11.5.6 模板文件的編寫 288
11.6 ThinkPHP應(yīng)用實例——在線日程表 292
思考與練習(xí) 295
第12章 文件和目錄操作 296
12.1 文件概述 296
12.1.1 文件類型 296
12.1.2 文件的常見屬性 297
12.2 基本的文件操作 299
12.2.1 打開文件 299
12.2.2 讀取文件內(nèi)容 300
12.2.3 向文件中寫入數(shù)據(jù) 304
12.2.4 關(guān)閉文件指針 305
12.2.5 文件的其他操作 306
12.3 常用的目錄操作 306
12.3.1 打開指定目錄 306
12.3.2 讀取目錄結(jié)構(gòu) 307
12.3.3 關(guān)閉目錄 308
12.4 文件上傳處理 308
12.4.1 相關(guān)設(shè)置 308
12.4.2 全局變量$_FILES應(yīng)用 308
12.4.3 文件上傳與處理函數(shù) 309
12.4.4 多文件上傳 312
12.4.5 文件下載 313
思考與練習(xí) 314
第13章 PHP圖形圖像處理 315
13.1 了解GD2函數(shù)庫 315
13.2 設(shè)置GD2函數(shù)庫 315
13.3 常用的圖像處理 316
13.3.1 創(chuàng)建畫布 316
13.3.2 顏色處理 317
13.3.3 繪制文字 318
13.3.4 輸出圖像 321
13.3.5 銷毀圖像 322
13.4 運(yùn)用Jpgraph類庫繪制圖像 322
13.4.1 Jpgraph類庫簡介 322
13.4.2 Jpgraph類庫的安裝 322
13.4.3 使用柱形圖分析產(chǎn)品月銷售量 323
13.4.4 兩類圖書銷售的走勢 324
13.4.5 使用3D餅狀圖展示不同月份的業(yè)績 326
思考與練習(xí) 327
第14章 程序調(diào)試與錯誤處理 328
14.1 程序調(diào)試的基本流程 328
14.2 常見的錯誤類型 329
14.2.1 語法錯誤 329
14.2.2 語義錯誤 330
14.2.3 邏輯錯誤 331
14.2.4 注釋錯誤 331
14.2.5 運(yùn)行錯誤 332
14.3 錯誤處理機(jī)制 332
14.3.1 控制錯誤顯示及顯示方式 332
14.3.2 控制錯誤級別 333
14.4 常用程序調(diào)試方法 333
14.4.1 用die語句進(jìn)行調(diào)試 334
14.4.2 用mysql_error()函數(shù)輸出SQL語句的錯誤 334
14.4.3 用try-catch語句拋出并捕獲異常 335
14.5 錯誤處理技巧 336
14.5.1 用“@”隱藏錯誤 336
14.5.2 自定義錯誤信息 337
思考與練習(xí) 337
參考文獻(xiàn) 338