前言 1
引言 3
第Ⅰ部分 使用MySQL 19
第1章 针对MySQL的数据库设计 21
1.1 为什么使用关系型数据库 21
1.2 讨厌的异态 22
1.2.1 更新异态 23
1.2.2 删除异态 24
1.2.3 插入异态 25
1.3 规范化 25
1.3.1 第一范式 25
1.3.2 第二范式 26
1.3.3 第三范式 26
1.4 关系的类型 27
1.4.1 一对多关系 27
1.4.2 一对一关系 28
1.4.3 多对多关系 29
1.5 MySQL不支持的特性 30
1.5.1 引用完整性 30
1.5.2 事务 31
1.5.3 存储过程 31
1.6 小结 32
第2章 创建和修改表的SQL语言 33
2.1 定义 33
2.1.1 空值 33
2.1.2 索引 35
2.2 create database语句 35
2.3 use database语句 36
2.4 create table语句 36
2.5 列的类型 38
2.5.1 文本类型 38
2.5.2 数字类型 40
2.5.3 日期和时间类型 41
2.6 创建索引 43
2.7 表的类型 44
2.8 alter table语句 45
2.8.1 更改表名 45
2.8.2 添加和删除列 45
2.8.3 添加和删除索引 46
2.8.4 更改列定义 46
2.9 insert语句 46
2.10 update语句 47
2.11 删除表/数据库 48
2.12 show tables 48
2.13 show columns/show fields 49
2.14 使用phpMy Admin 50
2.15 小结 52
第3章 使用select语句得到所需的信息 53
3.1 基本的select语句 53
3.1.1 where子句 56
3.1.2 order by 60
3.1.3 limit 60
3.1.4 group by和聚合函数 61
3.2 联接表 66
3.2.1 两个表的联接(相等联接) 66
3.2.2 多表联接 67
3.2.3 外联接 68
3.2.4 自联接 69
3.3 MySQL不支持的SQL标准 70
3.3.1 联合 71
3.3.2 相关子查询 71
3.4 小结 71
第Ⅱ部分 使用PHP 73
第4章 PHP入门——变量 75
4.1 在脚本内使用简单的变量 75
4.1.1 定界字符串 76
4.1.2 在脚本内分配数组 77
4.1.3 在脚本中为二维数组赋值 79
4.2 访问通过浏览器输入的变量 80
4.2.1 HTML表单变量 80
4.2.2 传递数组 81
4.2.3 cookie 83
4.2.4 会话 84
4.3 使用内置变量 86
4.3.1 PHP变量 86
4.3.2 Apache变量 87
4.3.3 其他的Web服务器变量 89
4.4 测试变量 90
4.4.1 isset() 90
4.4.5 is_string() 91
4.4.7 is_bool() 91
4.4.6 is_array() 91
4.4.4 is_double() 91
4.4.3 is_int() 91
4.4.2 empty() 91
4.4.8 is_object() 92
4.4.9 gettype() 92
4.5 修改变量类型 92
4.5.1 类型强制转化 92
4.6 可变变量 93
4.5.3 intval()、doubleval()和stringval() 93
4.5.2 使用settype() 93
4.7 小结 94
第5章 控制结构 95
5.1 if语句 95
5.1.1 确定PHP条件的真假 96
5.1.2 比较运算符 97
5.1.3 逻辑运算符 97
5.1.4 复杂的if语句 98
5.1.6 if...elseif语句 99
5.1.5 if...else语句 99
5.1.7 if…结构的替换方法 100
5.2 switch...case 100
5.3 循环 101
5.3.1 while 101
5.3.2 do…while 103
5.3.3 for 103
5.3.4 foreach 104
5.3.5 continue和break 105
5.3.6 continue 105
5.3.7 break 106
5.4 包含文件 106
5.5 小结 106
第6章 PHP的内置函数 107
6.1 函数基础 107
6.1.2 返回值 108
6.1.1 参数 108
6.2 函数文档 109
6.3 重要的PHP 4函数 109
6.3.1 MySQL API 110
6.3.2 字符串处理函数 118
6.3.3 正则表达式函数 126
6.3.4 类型转换函数 130
6.3.5 数组函数 132
6.3.6 打印函数 136
6.3.7 日期/时间函数 138
6.3.8 文件系统函数 141
6.3.9 随机数产生器函数 144
6.3.10 cURL函数 144
6.3.11 会话函数 144
6.3.12 HTTP首部函数 145
6.3.13 邮件函数 146
6.3.15 输出缓冲 147
6.3.14 URL函数 147
6.3.16 信息函数 148
6.4 小结 148
第7章 编写结构良好且易读的代码 151
7.1 代码的缩进格式 151
7.1.1 代码块 151
7.1.2 函数调用 152
7.1.3 SQL语句 153
7.2 包含 154
7.2.1 include()和require() 156
7.2.2 include_once()和require_once() 156
7.3 用户自定义的函数 157
7.3.1 函数的基础 157
7.3.2 返回值 159
7.3.3 使用可变数量的参数 160
7.3.4 变量的作用范围 161
7.4 面向对象的程序设计 163
7.4.1 类 164
7.4.2 实例化一个对象 166
7.4.3 继承 167
7.5 面向对象的方法与过程代码的比较 168
7.6 注释 169
7.7 小结 171
第Ⅲ部分 简单的应用程序 173
第8章 具有部分安全性的来宾簿程序——Guestbook2000 175
8.1 确定应用程序的范围和设计目标 175
8.1.1 必要的页面 176
8.1.2 需要预防发生的问题 177
8.2 设计数据库 179
8.3 代码概述 180
8.4 代码分解 181
8.4.1 可重用的函数 181
8.4.2 有趣的代码流 190
8.6 小结 192
8.5 脚本 192
9.1 确定应用程序的范围和设计目标 193
9.1.1 必要的页面 193
第9章 调查应用程序 193
9.1.2 需要避免发生的问题 196
9.2 设计数据库 197
9.3 代码概述 200
9.4 代码分解 201
9.4.1 可重用代码 202
9.5 有趣的代码流 212
9.5.1 admin_question.php 212
9.5.2 admin_get_winner.php 215
9.5.3 admin_winner.php 216
9.5.4 CLAIM.PHP 217
9.6 小结 219
第Ⅳ部分 较复杂的应用程序 221
10.1 确定应用程序的范围和设计 223
第10章 目录程序 223
10.1.1 必要的页面 224
10.1.2 需要防止发生的问题 227
10.2 数据 228
10.2.1 一种带缺陷的数据设计 228
10.2.2 MySQL的怪异 229
10.2.3 一种更好的数据库方案 231
10.3 代码概述 234
10.3.1 OO方法 234
10.3.2 访问文件系统 234
10.3.3 上载文件 235
10.3.4 访问外部实用程序 236
10.4 代码分解 236
10.4.1 理论上的对象 237
10.4.2 使用的对象 237
10.4.3 类 238
10.4.4 示例脚本 250
10.5 小结 251
第11章 内容管理系统 253
11.1 确定应用程序的范围和设计目标 253
11.1.1 必需的页面 254
11.1.2 需要避免的问题 258
11.2 设计数据库 258
11.3 代码概述 264
11.4 代码分解 264
11.4.1 可重用函数 264
11.5 有趣的代码流 266
11.5.1 co ntent/authenticate.php 266
11.5.2 content/admin_user.php 268
11.5.3 content/edit_story.php 272
11.6 小结 273
12.1 确定应用程序的范围和设计目标 275
第12章 讨论组应用程序 275
12.1.1 需要做的工作 276
12.1.2 需要预防发生的问题 278
12.1.3 数据 279
12.2 代码概述 282
12.3 代码分解 282
12.3.1 可重用函数 282
12.4 其他文件 289
12.4.1 index.php 290
12.5 小结 290
第13章 问题跟踪系统 291
13.1 确定应用程序的范围和设计目标 291
13.1.1 需要做的工作 291
13.1.2 需要预防发生的问题 294
13.1.3 设计数据库 294
13.3.1 可以重用的函数 298
13.3 代码分解 298
13.2 代码概述 298
13.3.2 脚本 310
13.4 小结 316
第14章 购物车应用程序 317
14.1 确定应用程序的范围和设计目标 317
14.1.1 需要做的工作 318
14.1.2 需要预防发生的问题 320
14.2 数据 320
14.3 配置概述 323
14.3.1 对加密和安全进行配置 323
14.3.2 加密工具和安全工具 325
14.3.3 配置信用卡授权 325
14.3.4 配置会话处理 326
14.4 代码概述 327
14.4.1 会话函数 327
14.4.2 cURL函数 329
14.4.3 与信用卡处理方进行交互 330
14.5 代码分解 330
14.5.1 类 331
14.5.2 脚本 337
14.7 小结 349
第Ⅴ部分 附录 351
附录A HTML表单 353
附录B PHP/ MySQL安装配置简要指南 360
附录C MySQL实用工具 369
附录D MySQL用户管理 379
附录E PHP函数参考 385
附录F 正则表达式概览 415
附录G 用户定义函数 422
附录H PHP和MySQL资源 443
附录I MySQL函数参考 449
附录J CD-ROM上的内容 478