編輯推薦
《圖靈程式設計叢書·Web開發系列·PHP與MySQL5程式設計(第2版)》是久負盛名的經典著作,以涵蓋全面詳實而著稱,對主題的選取和組織從實用出發,在講述知識之外還加入了作者自己的套用經驗,並提供了密集的實戰代碼示例,充分體現了作者深厚的開發功力。書中對PHP的介紹是迄今為止最為全面的,除了基礎知識外,還強調了PHP的面向對象特性、錯誤和異常處理、安全編程等方面,並講述了其他圖書很少涉及而實踐中卻非常重要的日期與時間、正則表達式、檔案與作業系統、檔案上傳、PEAR庫、Smarty模板、SQLite、PDO等技術。而對MySQL的闡述則圍繞動態Web站點的開發展開,透徹而又精到。
《圖靈程式設計叢書·Web開發系列·PHP與MySQL5程式設計(第2版)》不僅適合新手快速入門提高,也是有經驗程式設計師必備的參考書。
最好的編程圖書應該不是純粹地講述理論,而是要切合實際。如果你希望獲得PHP程式語言和MySQL資料庫伺服器的實踐經驗,對它們有全面的了解,並且想知道如何結合這些卓越的技術創建資料庫驅動的動態Web應用程式,那么《圖靈程式設計叢書·Web開發系列·PHP與MySQL5程式設計(第2版)》正合你所需。在《圖靈程式設計叢書·Web開發系列·PHP與MySQL5程式設計(第2版)》第一版出版後的18個月中,PHP和MySQL社區依舊持續“狂熱”地工作著,使得這兩項卓越技術又有了顯著的發展。因此,這一版增加了很多新內容,篇幅也增加了100多頁。
作者簡介
W.Jason Gilmore,世界知名的PHP開發人員,曾開發了大量PHP和MySQL應用程式,並在各大專業媒體發表了眾多膾炙人口的文章。目前,Jason在開發之餘,還負責著Apress出版公司的開源圖書出版項目。
目錄
32.1.3在事件後採取行動568
32.1.4前觸發器和後觸發器569
32.2MySQL對觸發器的支持569
32.2.1創建觸發器570
32.2.2查看現有的觸發器571
32.2.3修改觸發器572
32.2.4刪除觸發器572
32.2.5級聯觸發器573
32.3將觸發器集成到Web應用程式574
32.4小結575
第33章視圖576
33.1視圖概述576
33.2MySQL對視圖的支持577
33.2.1創建和執行視圖577
33.2.2查看視圖信息581
33.2.3修改視圖582
33.2.4刪除視圖583
33.2.5更新視圖583
33.3將視圖結合到Web應用程式中583
33.4小結585
第34章實用資料庫查詢586
34.1示例數據586
34.2用PEAR創建表格輸出587
34.2.1安裝HTML_Table587
34.2.2創建一個簡單表587
34.2.3創建更可讀的行輸出589
34.2.4根據資料庫數據創建表格589
34.2.5一般化輸出過程591
34.3排序輸出593
34.4創建分頁輸出594
34.5列出頁碼597
34.6子查詢598
34.6.1用子查詢完成比較599
34.6.2用子查詢確定存在性599
34.6.3用子查詢維護資料庫600
34.6.4在PHP中使用子查詢601
34.7游標601
34.7.1游標基礎601
34.7.2創建游標602
34.7.3打開游標602
34.7.4使用游標602
34.7.5關閉游標603
34.7.6在PHP中使用游標604
34.8小結604
第35章索引和搜尋605
35.1資料庫索引605
35.1.1主鍵索引605
35.1.2唯一索引606
35.1.3常規索引607
35.1.4全文索引608
35.1.5索引最佳實踐611
35.2基於表單的搜尋611
35.2.1執行簡單搜尋612
35.2.2擴展搜尋功能613
35.2.3執行全文搜尋614
35.3小結615
第36章事務616
36.1什麼是事務616
36.2MySQL的事務功能616
36.2.1系統需求617
36.2.2表創建617
36.2.3innodb配置參數618
36.3示例項目619
36.3.1示例數據620
36.3.2執行示例事務620
36.3.3備份和恢復InnoDB表622
36.3.4用法提示622
36.4用PHP構建事務應用程式622
36.5小結624
第37章導入和導出數據625
37.1示例表625
37.2獲得合適的媒介625
37.3導出數據626
37.4導入數據628
37.4.1利用LOADDATAINFILE導入數據628
37.4.2用MySQLimport導入631
37.4.3用PHP載入表數據633
37.5小結634
索引(圖靈網站下載)
第1章PHP概述1
1.1歷史1
1.1.1PHP42
1.1.2PHP53
1.2PHP的一般特性3
1.2.1實用性3
1.2.2強大功能4
1.2.3可選擇性4
1.2.4成本5
1.3小結5
第2章安裝配置Apache和PHP6
2.1安裝6
2.1.1獲得發行包6
2.1.2安裝過程7
2.1.3測試安裝11
2.1.4定製UNIX構建12
2.1.5定製Windows構建12
2.1.6常見錯誤13
2.1.7查看並下載文檔13
2.2配置13
2.2.1管理PHP的配置指令14
2.2.2PHP的配置指令15
2.3小結29
第3章PHP基礎30
3.1界定PHP代碼30
3.1.1默認語法30
3.1.2短標記31
3.1.3腳本31
3.1.4ASP風格32
3.1.5嵌入多個代碼塊32
3.2注釋32
3.2.1單行C++語法32
3.2.2Shell語法32
3.2.3多行C語法33
3.3輸出33
3.3.1print()33
3.3.2echo()34
3.3.3printf()34
3.3.4sprintf()35
3.4數據類型35
3.4.1標量數據類型35
3.4.2複合數據類型37
3.4.3特殊數據類型38
3.4.4類型強制轉換38
3.4.5類型自動轉換39
3.4.6與類型有關的函式40
3.4.7類型標識符函式40
3.5標識符41
3.6變數41
3.6.1變數聲明42
3.6.2變數作用域43
3.6.3PHP的超級全局變數45
3.6.4變數的變數48
3.7常量49
3.8表達式49
3.8.1運算元50
3.8.2操作符50
3.9字元串插入54
3.9.1雙引號55
3.9.2單引號55
3.9.3Heredoc56
3.10控制結構56
3.10.1執行控制語句57
3.10.2條件語句57
3.10.3循環語句59
3.10.4檔案包含語句63
3.10.5require_once()65
3.11小結65
第4章函式66
4.1調用函式66
4.2創建函式66
4.2.1按值傳遞參數67
4.2.2按引用傳遞參數68
4.2.3默認參數值68
4.2.4可選參數68
4.2.5從函式返回值69
4.2.6嵌套函式70
4.2.7遞歸函式70
4.2.8變數函式72
4.3函式館73
4.4小結74
第5章數組75
5.1什麼是數組75
5.2輸出數組76
5.3創建數組77
5.4測試數組79
5.5增加和刪除數組元素79
5.6定位數組元素81
5.7遍歷數組82
5.8確定數組大小和唯一性85
5.9數組排序86
5.10合併、拆分、接合和分解數組91
5.11其他有用的數組函式95
5.12小結96
第6章面向對象的PHP97
6.1OOP的好處97
6.1.1封裝97
6.1.2繼承98
6.1.3多態98
6.2關鍵的OOP概念99
6.2.1類99
6.2.2對象99
6.2.3欄位100
6.2.4屬性102
6.2.5常量104
6.2.6方法105
6.3類型提示108
6.4構造函式和析構函式108
6.4.1構造函式108
6.4.2析構函式110
6.5靜態類成員111
6.6instanceof關鍵字112
6.7輔助函式112
6.8自動載入對象114
6.9小結114
第7章高級OOP特性115
7.1PHP不支持的高級OOP特性115
7.2對象克隆116
7.2.1克隆示例116
7.2.2__clone()方法117
7.3繼承118
7.3.1類繼承118
7.3.2繼承和構造函式120
7.4接口121
7.4.1實現一個接口122
7.4.2實現多個接口123
7.5抽象類124
7.6反射124
7.6.1編寫ReflectionClass類125
7.6.2編寫ReflectionMethod類127
7.6.3編寫ReflectionParameter類128
7.6.4編寫ReflectionProperty類129
7.6.5反射的其他用途130
7.7小結130
第8章錯誤和異常處理131
8.1配置指令131
8.2錯誤日誌134
8.3異常處理135
8.3.1為什麼異常處理很方便136
8.3.2PHP的異常處理實現137
8.4小結140
第9章字元串和正則表達式141
9.1複雜(大括弧)偏移語法141
9.2正則表達式142
9.2.1正則表達式語法(POSIX)142
9.2.2PHP的正則表達式函式(POSIX擴展)144
9.2.3正則表達式語法(Perl風格)146
9.3其他字元串函式151
9.3.1確定字元串長度152
9.3.2比較兩個字元串152
9.3.3處理字元串大小寫154
9.3.4字元串與HTML相互轉換155
9.3.5正則表達式函式的替代函式159
9.3.6填充和剔除字元串164
9.3.7字元和單詞計數165
9.4使用PEAR:Validate_US167
9.4.1安裝Validate_US167
9.4.2使用Validate_US168
9.5小結168
第10章處理檔案和作業系統169
10.1了解檔案和目錄169
10.1.1解析目錄路徑169
10.1.2檔案類型和連結171
10.1.3計算檔案、目錄和磁碟大小173
10.1.4訪問和修改時間175
10.2檔案所有權和許可權176
10.3檔案I/O178
10.3.1資源的概念178
10.3.2換行178
10.3.3檔案末尾178
10.3.4打開和關閉檔案179
10.3.5讀取檔案180
10.3.6移動檔案指針184
10.3.7寫入檔案184
10.3.8讀取目錄內容185
10.4執行Shell命令186
10.5系統級程式執行187
10.5.1清理輸入187
10.5.2PHP的程式執行函式188
10.6小結190
第11章PEAR191
11.1流行的PEAR包191
11.2安裝和更新PEAR193
11.2.1安裝PEAR193
11.2.2PEAR和ISP公司194
11.2.3更新PEAR194
11.3使用PEAR包管理器194
11.3.1查看安裝的包195
11.3.2了解安裝包的更多信息195
11.3.3安裝PEAR包196
11.3.4使用PEAR包197
11.3.5升級PEAR包198
11.3.6卸載PEAR包198
11.3.7降級PEAR包199
11.4小結199
第12章日期和時間200
12.1UNIX時間戳200
12.2PHP的日期和時間庫200
12.3日期函式206
12.3.1顯示本地化的日期和時間206
12.3.2顯示網頁的最新修改日期209
12.3.3確定當前月份中的天數209
12.3.4計算當前日期後X天的日期209
12.3.5創建日曆210
12.4PHP5.1213
12.4.1Date基礎213
12.4.2Date構造函式213
12.4.3訪問方法和修改方法214
12.4.4驗證函式216
12.4.5處理方法216
12.5小結222
第13章表單和導航提示223
13.1PHP和Web表單223
13.1.1簡單示例224
13.1.2向函式傳遞表單數據225
13.1.3處理多值表單組件226
13.1.4用PHP生成表單227
13.1.5自動選擇表單數據228
13.1.6PHP、Web表單和JavaScript229
13.2導航提示231
13.2.1用戶友好的URL231
13.2.2“麵包屑型”軌跡233
13.2.3創建定製錯誤處理函式237
13.3小結238
第14章身份認證239
14.1HTTP認證概念239
14.2PHP認證240
14.2.1認證變數240
14.2.2認證方法241
14.3用戶登錄管理248
14.3.1密碼指派248
14.3.2使用CrackLib庫測試密碼易猜性250
14.3.3一次性URL和密碼恢復251
第15章處理檔案上傳254
15.1通過HTTP協定上傳檔案254
15.2通過PHP處理上傳255
15.2.1PHP的檔案上傳/資源指令255
15.2.2$_FILES數組256
15.2.3PHP的檔案上傳函式256
15.2.4上傳錯誤訊息258
15.2.5檔案上傳示例258
15.3利用PEAR:HTTP_Upload261
15.3.1安裝HTTP_Upload261
15.3.2了解關於上傳檔案的更多信息262
15.3.3將上傳的檔案移動到最終目標263
15.3.4上傳多個檔案263
15.4小結264
第16章網路265
16.1DNS、伺服器和服務265
16.1.1DNS265
16.1.2服務268
16.1.3建立套接字連線269
16.2郵件271
16.2.1配置指令271
16.2.2傳送純文本電子郵件272
16.2.3使用額外的信息首部傳送電子郵件272
16.2.4將電子郵件傳送給多個接收者273
16.2.5傳送HTML格式的電子郵件273
16.2.6傳送附屬檔案274
16.3IMAP、POP3和NNTP275
16.3.1需求276
16.3.2建立和關閉連線276
16.3.3了解更多關於信箱和郵件的信息277
16.3.4獲取郵件280
16.3.5寫郵件286
16.3.6傳送郵件286
16.3.7信箱管理287
16.3.8郵件管理288
16.4流288
16.4.1流包裝器和上下文289
16.4.2流過濾器290
16.5常見網路任務291
16.5.1連線一台伺服器291
16.5.2連線埠掃描器292
16.5.3子網轉換器293
16.5.4測試用戶頻寬294
16.6小結295
第17章PHP和LDAP296
17.1LDAP介紹297
17.2在PHP中使用LDAP297
17.2.1連線到LDAP伺服器297
17.2.2綁定到LDAP伺服器298
17.2.3關閉LDAP伺服器連線299
17.2.4獲取LDAP數據299
17.2.5處理項值301
17.2.6統計所獲取的項302
17.2.7獲取屬性302
17.2.8排序和比較LDAP項305
17.2.9處理項306
17.2.10回收記憶體308
17.2.11插入LDAP數據309
17.2.12更新LDAP數據309
17.2.13刪除LDAP數據310
17.2.14配置函式311
17.2.15字元編碼312
17.2.16處理區分名312
17.2.17錯誤處理313
17.3小結314
第18章會話處理器315
18.1什麼是會話處理315
18.1.1cookie315
18.1.2URL重寫316
18.1.3會話處理過程316
18.2配置指令317
18.3關鍵概念320
18.3.1開始會話320
18.3.2銷毀會話321
18.3.3獲取和設定會話ID321
18.3.4創建和刪除會話變數321
18.3.5編碼和解碼會話數據322
18.4實際的會話處理示例324
18.4.1自動登錄324
18.4.2最近瀏覽的文檔索引325
18.5創建定製會話處理器327
18.5.1將定製會話函式加入到PHP邏輯327
18.5.2基於MySQL的定製會話處理器328
18.6小結330
第19章用Smarty模板化331
19.1什麼是模板化引擎331
19.2Smarty介紹333
19.3安裝Smarty333
19.4使用Smarty334
19.5Smarty的表現邏輯336
19.5.1注釋336
19.5.2變數修飾符336
19.5.3控制結構339
19.5.4語句342
19.6創建配置檔案344
19.6.1config_load345
19.6.2引用配置變數345
19.7結合Smarty使用CSS346
19.8快取347
19.8.1處理快取生命期347
19.8.2通過is_cached()消除處理開銷348
19.8.3為每個模板創建多個快取348
19.8.4關於快取的結束語349
19.9小結350
第20章Web服務351
20.1為什麼使用Web服務352
20.2真正簡單聚合353
20.2.1RSS語法355
20.2.2MagpieRSS356
20.3SimpleXML361
20.3.1SimpleXML函式362
20.3.2SimpleXML方法363
20.4SOAP365
20.4.1NuSOAP366
20.4.2PHP5的SOAP擴展374
20.5使用PHPWeb服務和C#客戶381
20.6小結383
第21章安全PHP編程384
21.1安全地配置PHP384
21.1.1安全模式385
21.1.2其他與安全有關的配置參數386
21.2隱藏配置細節388
21.3隱藏敏感數據389
21.3.1注意文檔根目錄390
21.3.2拒絕訪問某些檔案擴展名390
21.4清理用戶數據390
21.4.1檔案刪除390
21.4.2跨網站腳本391
21.4.3清理用戶輸入:解決方案392
21.5數據加密394
21.5.1PHP的加密函式394
21.5.2mhash395
21.5.3MCrypt396
21.6小結397
第22章SQLite398
22.1SQLite介紹398
22.1.1安裝SQLite398
22.1.2使用SQLite命令行界面399
22.2PHP的SQLite庫400
22.2.1SQLite指令400
22.2.2打開連線400
22.2.3在記憶體中創建表401
22.2.4關閉連線401
22.2.5查詢資料庫402
22.2.6解析結果集403
22.2.7獲取結果集細節405
22.2.8操作結果集指針406
22.2.9了解表模式的更多信息408
22.2.10操作二進制數據408
22.2.11創建和覆蓋SQLite函式409
22.2.12創建聚集函式410
22.3小結411
第23章PDO介紹412
23.1為什麼還要另一種資料庫抽象層413
23.2使用PDO413
23.2.1安裝PDO414
23.2.2PDO的資料庫支持414
23.2.3連線到資料庫伺服器並選擇資料庫415
23.2.4存取屬性416
23.2.5錯誤處理417
23.2.6查詢執行417
23.2.7準備語句418
23.2.8獲取數據421
23.2.9設定綁定列423
23.2.10事務424
23.3小結425
第24章MySQL介紹426
24.1MySQL為什麼如此流行426
24.1.1靈活性426
24.1.2強大功能427
24.1.3靈活的許可選擇428
24.1.4超級活躍的用戶群體429
24.2MySQL4429
24.3MySQL5430
24.4著名的MySQL用戶430
24.4.1craigslist430
24.4.2雅虎財經431
24.4.3維基百科431
24.5小結431
第25章安裝和配置MySQL432
25.1PHP和MySQL許可問題432
25.1.1Linux433
25.1.2Windows433
25.2下載MySQL433
25.3安裝MySQL434
25.3.1Linux434
25.3.2Windows437
25.4設定MySQL管理員密碼439
25.5啟動和停止MySQL439
25.5.1手工控制守護進程439
25.5.2自動啟動和停止MySQL441
25.6配置和最佳化MySQL442
25.6.1mysqld_safe443
25.6.2配置和最佳化參數443
25.6.3my.cnf檔案446
25.7小結448
第26章眾多MySQL客戶端449
26.1標準客戶端選項449
26.2連線選項450
26.3一般選項450
26.4mysql451
26.4.1關鍵mysql選項451
26.4.2以互動模式使用mysql452
26.4.3查看配置變數和系統狀態454
26.4.4以批處理模式使用mysql455
26.4.5有用的mysql提示456
26.5mysqladmin458
26.6其他實用工具459
26.6.1mysqldump459
26.6.2mysqlshow459
26.6.3mysqlhotcopy460
26.6.4mysqlimport460
26.6.5myisamchk461
26.6.6mysqlcheck461
26.7第三方客戶端程式462
26.7.1MySQL管理器462
26.7.2phpMyAdmin463
26.7.3MySQL查詢瀏覽器464
26.7.4Navicat465
26.8小結466
第27章MySQL存儲引擎和數據類型467
27.1存儲引擎467
27.1.1InnoDB468
27.1.2MyISAM468
27.1.3MEMORY470
27.1.4MERGE471
27.1.5BDB471
27.1.6FEDERATED471
27.1.7ARCHIVE472
27.1.8CSV473
27.1.9EXAMPLE473
27.1.10BLACKHOLE473
27.1.11存儲引擎FAQ473
27.2數據類型和屬性475
27.2.1數據類型475
27.2.2數據類型屬性479
27.3運算元據庫和表481
27.3.1運算元據庫481
27.3.2操作表483
27.3.3修改表結構485
27.3.4INFORMATION_SCHEMA485
27.4小結487
第28章保護MySQL的安全488
28.1首先應當做什麼488
28.2保護mysqld守護進程489
28.3MySQL訪問許可權系統489
28.3.1許可權系統的工作方式490
28.3.2訪問信息存儲在哪裡491
28.4用戶和許可權管理498
28.4.1CREATEUSER498
28.4.2DROPUSER499
28.4.3RENAMEUSER499
28.4.4GRANT和REVOKE命令499
28.4.5查看許可權503
28.5限制用戶資源503
28.6保護MySQL連線504
28.6.1授權選項504
28.6.2SSL選項505
28.6.3啟動啟用SSL的MySQL伺服器506
28.6.4使用啟用SSL的客戶端進行連線506
28.6.5在my.cnf檔案中存儲SSL選項506
28.7小結507
第29章PHP的MySQL擴展508
29.1預備工作508
29.1.1在Linux中啟用MySQL擴展508
29.1.2在Windows中啟用MySQL擴展508
29.1.3用戶許可權509
29.1.4示例數據509
29.2PHP的MySQL命令509
29.2.1建立和關閉連線509
29.2.2在單獨的檔案中存儲連線信息511
29.2.3保護連線信息511
29.3選擇資料庫512
29.4查詢MySQL512
29.5獲取和顯示數據513
29.6插入數據516
29.7修改數據517
29.8刪除數據519
29.9所選擇的記錄和受影響的記錄520
29.10獲取資料庫和表的信息521
29.11獲取欄位信息523
29.11.1查看錶屬性526
29.11.2獲取錯誤信息527
29.12輔助函式528
29.13小結530
第30章PHP的mysqli擴展531
30.1預備工作532
30.1.1在UNIX中啟用mysqli擴展532
30.1.2在Windows中啟用mysqli擴展532
30.1.3示例數據532
30.2使用mysqli擴展532
30.2.1連線MySQL伺服器532
30.2.2連線錯誤報告533
30.2.3選擇一個MySQL資料庫535
30.2.4關閉MySQL連線536
30.3查詢536
30.3.1查詢執行536
30.3.2回收查詢記憶體537
30.3.3準備結果集538
30.3.4解析結果539
30.3.5多個查詢542
30.3.6準備語句543
30.4資料庫事務548
30.5小結549
第31章存儲例程550
31.1應當使用存儲例程嗎550
31.1.1存儲例程的優點550
31.1.2存儲例程的缺點551
31.2MySQL如何實現存儲例程551
31.2.1存儲例程許可權表551
31.2.2創建存儲例程553
31.2.3聲明和設定變數554
31.2.4執行存儲例程555
31.2.5多語句存儲例程556
31.2.6從另一個例程中調用例程562
31.2.7修改存儲例程563
31.2.8刪除存儲例程563
31.2.9查看例程狀態563
31.2.10查看例程的創建語法564
31.2.11條件和處理器564
31.3將例程集成到Web應用程式565
31.3.1創建員工獎金界面565
31.3.2獲取多條記錄566
31.4小結566
第32章MySQL觸發器567
32.1介紹觸發器567
32.1.1為什麼使用觸發器567
32.1.2在事件前採取行動568