PHP與MySQL是Web應用系統(tǒng)開發(fā)技術的經(jīng)典組合,具有開放源代碼、支持多種操作系統(tǒng)平臺等特點,被國內外眾多網(wǎng)站廣泛采用,具有很強的實用性。本書由淺入深、循序漸進,系統(tǒng)地介紹了PHP的相關知識及其在Web應用程序開發(fā)中的關鍵技術。全書共14章,包括PHP概述與開發(fā)運行環(huán)境搭建、PHP語法基礎、PHP流程控制語句、PHP函數(shù)、PHP數(shù)組應用、Web互動與會話控制技術、MySQL數(shù)據(jù)庫、PHP操作MySQL數(shù)據(jù)庫、PHP面向對象編程、基于PDO數(shù)據(jù)庫抽象層、PHP與MVC開發(fā)模式、文件和目錄操作、PHP圖形圖像處理、程序調試與錯誤處理。 本書內容豐富、講解深入,適用于初、中級PHP用戶,既可以作為高等學校"Web程序設計”"網(wǎng)站開發(fā)與設計”課程的教材,又可以作為Web應用程序開發(fā)人員的參考用書。
李輝,博士,中國農業(yè)大學農業(yè)大數(shù)據(jù)實驗室主任,教育部評估中心工程教育專業(yè)認證專家組成員,主要從事大數(shù)據(jù)技術應用、高等教育教學等方面的研究工作,主講《大數(shù)據(jù)技術及應用概論》等課程,發(fā)表了《本科大數(shù)據(jù)實驗平臺及資源建設的思考與探索》等多篇教育教學相關論文,主編了《數(shù)據(jù)庫系統(tǒng)原理及MySQL應用教程》等教材,建設了農業(yè)大數(shù)據(jù)實驗室,搭建了大數(shù)據(jù)教學實驗實訓平臺,完成了數(shù)據(jù)科學與大數(shù)據(jù)技術主專業(yè)和雙學位專業(yè)人才培養(yǎng)方案的制定工作。目前正在開展教育部高教司產學合作協(xié)同育人項目 "基于大數(shù)據(jù)的分布式架構應用課程群開發(fā)” 、"校企共建大數(shù)據(jù)聯(lián)合實驗室項目”以及"基于可視化的農產品安全大數(shù)據(jù)分析系統(tǒng)研究”、"基于全景技術的實時可視化互動農業(yè)系統(tǒng)應用與示范”等課題的研究工作。參與國家科技支撐計劃課題和公益性行業(yè)(農業(yè))科研專項縱向課題研究10余項,發(fā)表論文20多篇,申請軟件著作權20多個,申請專利3項。
目錄
第1章 PHP概述與開發(fā)運行環(huán)境搭建 1
1.1 Web技術與PHP 1
1.1.1 Web技術 1
1.1.2 PHP概述 3
1.1.3 PHP運行環(huán)境 4
1.1.4 PHP的工作原理 6
1.1.5 如何學好PHP編程 7
1.2 網(wǎng)頁的前端技術 7
1.2.1 HTML基礎知識 7
1.2.2 HTML表單 12
1.2.3 表單數(shù)據(jù)的接收 17
1.3 集成開發(fā)環(huán)境搭建 18
1.3.1 PHP運行環(huán)境XAMPP的安裝 18
1.3.2 PHP開發(fā)常見的編輯工具 22
1.3.3 NetBeans的安裝和使用 23
1.3.4 PHP程序開發(fā)流程 27
思考與練習 27
第2章 PHP語法基礎 29
2.1 PHP基本語法 29
2.1.1 PHP標記 29
2.1.2 編碼規(guī)范 30
2.1.3 代碼注釋 33
2.1.4 PHP語句及語句塊 34
2.1.5 PHP標識符與關鍵字 35
2.1.6 PHP大小寫敏感 35
2.2 PHP常量 36
2.2.1 聲明和使用常量 36
2.2.2 預定義常量 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 標量數(shù)據(jù)類型 44
2.4.2 復合數(shù)據(jù)類型 48
2.4.3 特殊數(shù)據(jù)類型 50
2.4.4 偽類型 51
2.4.5 數(shù)據(jù)類型轉換 52
2.4.6 檢測數(shù)據(jù)類型 54
2.4.7 PHP數(shù)據(jù)的輸出 54
2.5 PHP運算符 56
2.5.1 算術運算符 56
2.5.2 字符串運算符 57
2.5.3 賦值運算符 57
2.5.4 自加或自減運算符 58
2.5.5 邏輯運算符 59
2.5.6 比較運算符 60
2.5.7 條件運算符 61
2.5.8 NULL合并運算符 61
2.5.9 組合比較運算符 61
2.5.10 位運算符 62
2.5.11 錯誤控制運算符 62
2.5.12 運算符的使用規(guī)則 63
2.6 表達式與語句 63
思考與練習 63
第3章 PHP流程控制語句 66
3.1 PHP的三種控制結構 66
3.2 選擇結構語句 68
3.2.1 if語句 68
3.2.2 switch語句 71
3.3 循環(huán)結構語句 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 跳轉語句 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
思考與練習 84
第4章 PHP函數(shù) 86
4.1 函數(shù) 86
4.1.1 定義和調用函數(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ù)的高級調用 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ū)設置 103
4.4.2 格式化日期和時間 103
4.4.3 獲取日期和時間信息 104
4.5 正則表達式在PHP中的應用 105
4.5.1 正則表達式使用的常用函數(shù) 105
4.5.2 正則表達式的基本語法 107
4.5.3 PCRE兼容正則表達式函數(shù) 111
4.5.4 正則表達式的其他特性 114
思考與練習 116
第5章 PHP數(shù)組應用 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ù)組中的重復元素 130
5.4.3 獲取數(shù)組中指定元素的鍵名 131
5.4.4 數(shù)組鍵與值的排序 132
5.4.5 字符串與數(shù)組的轉換 132
5.5 預定義數(shù)組 133
思考與練習 137
第6章 Web互動與會話控制技術 139
6.1 Web服務器交互原理 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 彈出確認對話框 149
6.4.5 document對象 149
6.4.6 彈出新窗口 151
6.5 Cookie技術 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技術 156
6.6.1 了解Session 157
6.6.2 創(chuàng)建Session 157
6.6.3 使用Session設置時間 159
6.7 Session高級應用 161
6.7.1 Session臨時文件 161
6.7.2 Session緩存 161
6.7.3 Session綜合應用案例 162
6.8 PHP頁面跳轉 164
6.8.1 header()函數(shù) 164
6.8.2 meta標簽 164
6.8.3 JavaScript腳本 165
6.8.4 在HTML標記中實現(xiàn)跳轉 165
思考與練習 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 導入/導出數(shù)據(jù) 186
思考與練習 187
第8章 PHP操作MySQL數(shù)據(jù)庫 191
8.1 PHP操作MySQL數(shù)據(jù)庫的一般步驟 191
8.2 PHP顯示MySQL數(shù)據(jù)庫數(shù)據(jù)的函數(shù)應用 192
8.2.1 數(shù)據(jù)準備 192
8.2.2 建立與MySQL服務器的連接 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ù)應用 206
8.3.1 從頁面獲取數(shù)據(jù)并插入數(shù)據(jù)庫 206
8.3.2 根據(jù)表單內容修改數(shù)據(jù)庫數(shù)據(jù) 208
8.3.3 刪除數(shù)據(jù)庫數(shù)據(jù) 212
8.4 預處理與參數(shù)綁定 213
8.4.1 什么是預處理 213
8.4.2 預處理的實現(xiàn) 213
8.5 PHP操作MySQL數(shù)據(jù)庫常見錯誤信息及分析 215
8.6 mysql()函數(shù)與mysqli()函數(shù)連接數(shù)據(jù)庫的區(qū)別與用法 216
思考與練習 217
第9章 PHP面向對象編程 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 構造方法(函數(shù))和析構方法(函數(shù)) 226
9.4 面向對象的封裝性 228
9.4.1 public關鍵字 229
9.4.2 private關鍵字 229
9.4.3 protected關鍵字 229
9.4.4 靜態(tài)屬性和靜態(tài)方法 230
9.5 面向對象的繼承性 231
9.5.1 類的繼承:extends關鍵字 232
9.5.2 類的繼承:parent::關鍵字 232
9.5.3 覆蓋父類方法 233
9.5.4 final關鍵字 234
9.5.5 trait機制 235
9.6 抽象類和接口 235
9.6.1 抽象類 236
9.6.2 接口 237
9.7 面向對象的多態(tài)性 238
9.7.1 通過繼承實現(xiàn)多態(tài) 239
9.7.2 通過接口實現(xiàn)多態(tài) 239
9.8 面向對象的魔術方法 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 兩種常見的設計模式 246
思考與練習 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 預處理語句prepare()和execute() 255
10.4 在PDO中獲取結果集 257
10.4.1 fetch()方法 257
10.4.2 fetchAll()方法 259
10.4.3 fetchColumn()方法 260
10.5 在PDO中捕獲SQL語句的錯誤 261
10.5.1 默認模式: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
思考與練習 267
第11章 PHP與MVC開發(fā)模式 269
11.1 MVC概述 269
11.1.1 MVC介紹 269
11.1.2 MVC的組成 270
11.2 PHP開發(fā)中的模板技術 271
11.2.1 模板與模板引擎 271
11.2.2 在PHP程序中使用模板 272
11.2.3 Smarty模板引擎 273
11.3 基于MVC的PHP開發(fā)框架簡介 275
11.4 CodeIgniter框架應用 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框架的應用 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應用實例——在線日程表 292
思考與練習 295
第12章 文件和目錄操作 296
12.1 文件概述 296
12.1.1 文件類型 296
12.1.2 文件的常見屬性 297
12.2 基本的文件操作 299
12.2.1 打開文件 299
12.2.2 讀取文件內容 300
12.2.3 向文件中寫入數(shù)據(jù) 304
12.2.4 關閉文件指針 305
12.2.5 文件的其他操作 306
12.3 常用的目錄操作 306
12.3.1 打開指定目錄 306
12.3.2 讀取目錄結構 307
12.3.3 關閉目錄 308
12.4 文件上傳處理 308
12.4.1 相關設置 308
12.4.2 全局變量$_FILES應用 308
12.4.3 文件上傳與處理函數(shù) 309
12.4.4 多文件上傳 312
12.4.5 文件下載 313
思考與練習 314
第13章 PHP圖形圖像處理 315
13.1 了解GD2函數(shù)庫 315
13.2 設置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 運用Jpgraph類庫繪制圖像 322
13.4.1 Jpgraph類庫簡介 322
13.4.2 Jpgraph類庫的安裝 322
13.4.3 使用柱形圖分析產品月銷售量 323
13.4.4 兩類圖書銷售的走勢 324
13.4.5 使用3D餅狀圖展示不同月份的業(yè)績 326
思考與練習 327
第14章 程序調試與錯誤處理 328
14.1 程序調試的基本流程 328
14.2 常見的錯誤類型 329
14.2.1 語法錯誤 329
14.2.2 語義錯誤 330
14.2.3 邏輯錯誤 331
14.2.4 注釋錯誤 331
14.2.5 運行錯誤 332
14.3 錯誤處理機制 332
14.3.1 控制錯誤顯示及顯示方式 332
14.3.2 控制錯誤級別 333
14.4 常用程序調試方法 333
14.4.1 用die語句進行調試 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
思考與練習 337
參考文獻 338