第1章 初识PHP 1
1.1 PHP的发展 1
1.1.1 PHP的概念 1
1.1.2 PHP的发展历程 1
1.1.3 PHP语言的优势 2
1.2 PHP的应用领域 3
1.3 PHP 7的新特点 3
1.4 PHP常用开发工具 5
1.4.1 PHP代码开发工具 5
1.4.2 网页设计工具 6
1.4.3 文本编辑工具 6
1.5 高手私房菜 8
1.6 经典习题 8
第2章 配置PHP 7服务器环境 9
2.1 PHP服务器概述 9
2.2 安装PHP 7前的准备工作 10
2.2.1 软硬件环境 10
2.2.2 获取PHP 7安装资源包 10
2.3 PHP 7+Apache服务器的环境搭建 12
2.3.1 Apache简介 12
2.3.2 关闭原有的网站服务器 13
2.3.3 安装Apache 13
2.3.4 将PHP与Apache建立关联 14
2.4 PHP环境的集成软件 16
2.5 实战演练——我的第一个PHP程序 19
2.6 高手私房菜 20
2.7 经典习题 20
第3章 PHP 7的基本语法 21
3.1 PHP标识符 21
3.1.1 短风格 21
3.1.2 script风格 21
3.1.3 ASP风格 22
3.2 编码规范 22
3.2.1 什么是编码规范 22
3.2.2 PHP中的编码规范 22
3.3 常量 24
3.3.1 声明和使用常量 24
3.3.2 内置常量 25
3.4 变量 27
3.4.1 PHP中的变量声明 27
3.4.2 可变变量与变量的引用 28
3.4.3 变量作用域(variable scope) 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.8 NULL型 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.1 require和include 54
4.3.2 include_once和require_once 55
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.1 while循环语句 60
4.6.2 do...while循环语句 61
4.6.3 for循环语句 62
4.6.4 foreach循环语句 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.3 PHP常量数组 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.2 PHP日期和时间函数 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.2 PHP中类的操作 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.2 final类和方法 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.1 php.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 表单与PHP 158
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.5 PHP获取表单传递数据的方法 170
10.6 PHP对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.3 Jpgraph库的使用 196
12.3.1 Jpgraph的安装 196
12.3.2 Jpgraph的配置 197
12.3.3 制作柱形与折线统计图 197
12.3.4 制作圆形统计图 199
12.4 实战演练——制作3D饼形统计图 201
12.5 高手私房菜 203
12.6 经典习题 203
第13章 Cookie和会话管理 204
13.1 Cookie基本操作 204
13.1.1 什么是Cookie 204
13.1.2 创建Cookie 205
13.1.3 读取Cookie 205
13.1.4 删除Cookie 206
13.2 认识Session 208
13.2.1 什么是Session 208
13.2.2 Session的基本功能 208
13.2.3 Cookie与Session 208
13.2.4 在Cookie或URL中存储Session ID 209
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 什么是MySQL 215
14.1.1 客户机-服务器软件 215
14.1.2 MySQL版本 216
14.1.3 MySQL的优势 216
14.2 启动服务并登录MySQL数据库 217
14.2.1 启动MySQL服务 217
14.2.2 登录MySQL数据库 218
14.2.3 配置Path变量 220
14.3 MySQL常用图形管理工具 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 查看表基本结构语句DESCRIBE 236
16.2.2 查看表详细结构语句SHOW CREATE TABLE 237
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 带BETWEEN AND的范围查询 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.3 MySQLhotcopy快速恢复 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...INTO OUTFILE导出文本文件 309
18.4.2 使用MySQLdump命令导出文本文件 312
18.4.3 使用MySQL命令导出文本文件 315
18.4.4 使用LOAD DATA INFILE方式导入文本文件 318
18.4.5 使用MySQLimport命令导入文本文件 320
18.5 实战演练——数据的备份与恢复 322
18.6 高手私房菜 325
18.7 经典习题 326
第19章 PHP操作MySQL数据库 327
19.1 PHP访问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