关于我们
书单推荐
新书推荐
|
PHP与MySQL程序设计 第5版
本书是全面讲述PHP 与MySQL 的经典畅销之作,不但详细介绍了这两种技术及其相关工具的核心特性,还讲解了如何高效地结合这两种技术构建出健壮的数据驱动的应用程序。书中大量实际的示例和深入的分析均来自于作者在这方面多年的专业经验,可用于解决开发者在实际工作中所面临的各种挑战。第5 版涵盖了PHP 7 的新增功能以及新版MySQL 的新特性。
1.本书是全面讲述PHP与MySQL的经典畅销之作,不但详细介绍了这两种技术及其相关工具的核心特性,还讲解了如何高效地结合这两种技术构建出健壮的数据驱动的应用程序。
2.作者基于20多年的专业开发经验,提供了大量实用示例,并针对开发者在实践中会遇到的挑战提供了真知灼见。
3.第5版全面涵盖了PHP7的的新增强和新改进,以及新版MySQL的那些值得信赖的特性。对于想使用PHP编写动态Web应用的读者来说,本书是一份实用的参考指南。
上一版读者评论
“内容广,可以用来入门,用来参考查询也不错。”
“写得很全面,涵盖了PHP的方方面面,讲得也通俗易懂,并且都是作者经验之谈。例子都是具体实践中会遇到的问题,和实际开发很贴近。”
弗兰克·M.克罗曼(Frank M. Kromann)
Amazon软件开发经理,Web by Pixel公司联合创始人兼CEO,有20余年开发和管理经验的PHP专家,在使用软件和技术解决商业问题方面有30余年经验。在杂志上发表过多篇PHP文章,另合著有《PHP 5范例代码查询辞典》。
第 1 章 PHP 简介 1
1.1 PHP 核心特性 1
1.1.1 实用性 1
1.1.2 能力 3
1.1.3 可能性 3
1.1.4 价格 3
1.2 PHP 现状 4
1.3 PHP 生态系统 5
1.3.1 Drupal 5
1.3.2 WordPress 6
1.3.3 Magento 6
1.3.4 MediaWiki 6
1.3.5 SugarCRM 6
1.3.6 Zend Framework 6
1.4 小结 7
第 2 章 环境配置 8
2.1 选择主机环境 9
2.1.1 虚拟服务器 9
2.1.2 平台即服务(PaaS) 9
2.2 安装先决条件 9
2.2.1 Windows 9
2.2.2 macOS 14
2.2.3 Linux 15
2.2.4 从源代码安装 15
2.3 配置PHP 15
2.3.1 Apache httpd.conf 和.htaccess文件 16
2.3.2 在运行脚本中配置 17
2.3.3 PHP 的配置指令 17
2.4 选择编辑器 23
2.4.1 PHPStorm 23
2.4.2 Atom 23
2.4.3 Sublime Text 23
2.4.4 Visual Studio Code 23
2.4.5 PDT(PHP 开发工具) 23
2.4.6 Zend Studio 23
2.5 小结 24
第3 章 PHP 基础 25
3.1 在网页中嵌入PHP 代码 25
3.1.1 默认语法 25
3.1.2 短标签 26
3.1.3 嵌入多个代码块 26
3.2 在代码中添加注释 27
3.2.1 单行C++语法 27
3.2.2 多行注释 27
3.3 向客户端输出数据 28
3.3.1 使用printf()语句进行复杂输出 29
3.3.2 sprintf()语句 30
3.4 PHP 数据类型 30
3.4.1 标量数据类型 30
3.4.2 复合数据类型 31
3.4.3 数据类型转换 32
3.4.4 数据类型的自动转换 33
3.4.5 类型标识符函数 34
3.5 使用变量处理动态数据 34
3.5.1 变量声明 34
3.5.2 PHP 超级全局变量 35
3.6 使用常量管理固定数据 38
3.7 使用表达式 38
3.7.1 操作数:表达式的输入 38
3.7.2 操作符:表达式的行为 39
3.8 字符串插值 43
3.8.1 双引号字符串 43
3.8.2 转义序列 44
3.8.3 单引号字符串 44
3.8.4 花括号 45
3.8.5 heredoc 45
3.8.6 nowdoc 45
3.9 控制结构 45
3.9.1 条件语句 46
3.9.2 使用循环语句进行重复迭代 47
3.9.3 文件包含语句 51
3.10 小结 52
第4 章 函数 53
4.1 调用函数 53
4.2 创建函数 54
4.2.1 返回多个值 55
4.2.2 按值传递参数 55
4.2.3 参数默认值 56
4.2.4 使用类型声明 57
4.2.5 递归函数 57
4.2.6 匿名函数 60
4.2.7 函数库 60
4.3 小结 61
第5 章 数组 62
5.1 什么是数组 62
5.2 创建数组 63
5.2.1 使用array()创建数组 64
5.2.2 使用list()提取数组 64
5.2.3 用预定义范围的值填充数组 65
5.2.4 检测数组 66
5.3 输出数组 66
5.4 添加和删除数组元素 67
5.4.1 在数组开头添加一个值 68
5.4.2 在数组末尾添加一个值 68
5.4.3 在数组开头删除一个值 68
5.4.4 在数组末尾删除一个值 68
5.5 数组元素定位 68
5.5.1 搜索数组 69
5.5.2 提取数组的键 70
5.5.3 提取数组的值 70
5.6 提取列 70
5.7 数组遍历 71
5.7.1 提取数组当前的键 71
5.7.2 提取数组当前的值 71
5.7.3 移动数组指针 72
5.7.4 向函数传递数组值 72
5.8 确定数组大小和唯一性 73
5.8.1 确定函数大小 73
5.8.2 计算数组值的频率 74
5.8.3 确定数组中的唯一值 74
5.9 数组排序 75
5.9.1 翻转数组元素顺序 75
5.9.2 键与值的互换 75
5.9.3 数组排序 76
5.10 数组的合并、切片、剪接和拆分 79
5.10.1 合并数组 79
5.10.2 递归追加数组 80
5.10.3 组合两个数组 80
5.10.4 数组的切片 81
5.10.5 数组的剪接 81
5.10.6 计算数组交集 82
5.10.7 计算关联数组的交集 83
5.10.8 计算数组的差 83
5.10.9 计算关联数组的差 83
5.11 其他有用的数组函数 84
5.11.1 返回一组随机的键 84
5.11.2 重排数组元素 84
5.12 小结 85
第6 章 面向对象的PHP 86
6.1 OOP 的优点 86
6.1.1 封装 86
6.1.2 继承 87
6.1.3 多态 87
6.2 OOP 核心概念 87
6.2.1 类 87
6.2.2 对象 88
6.2.3 属性 88
6.2.4 常量 93
6.2.5 方法 93
6.3 构造函数与析构函数 96
6.3.1 构造函数 96
6.3.2 析构函数 98
6.4 静态类成员 99
6.5 instanceof 关键字 99
6.6 辅助函数 100
6.6.1 确定一个类是否存在 100
6.6.2 确定对象上下文 100
6.6.3 获取类的方法 100
6.6.4 获取类的属性 100
6.6.5 获取已声明的类 100
6.6.6 获取对象属性 101
6.6.7 确定对象的父类 101
6.6.8 确定对象类型 101
6.6.9 确定对象子类类型 101
6.6.10 确定方法是否存在 101
6.7 自动加载对象 101
6.8 trait 102
6.9 小结 102
第7 章 高级OOP 特性 103
7.1 PHP 不支持的高级OOP 特性 103
7.2 对象克隆 103
7.2.1 克隆示例 104
7.2.2 __clone()方法 105
7.3 继承 106
7.3.1 类的继承 106
7.3.2 继承与构造函数 108
7.3.3 继承与延迟静态绑定 109
7.4 接口 110
7.4.1 实现单个接口 111
7.4.2 实现多个接口 112
7.4.3 确定接口是否存在 112
7.5 抽象类 112
7.6 命名空间 114
7.7 小结 116
第8 章 错误与异常处理 117
8.1 所有问题都是因你而生 117
8.2 配置PHP 错误报告 118
8.2.1 设置错误报告等级 118
8.2.2 在浏览器上显示错误信息 119
8.2.3 错误日志 119
8.2.4 创建和记录自定义消息 120
8.3 异常处理 120
8.4 PHP 异常处理功能 121
8.4.1 扩展基础异常类 121
8.4.2 默认构造函数 122
8.4.3 引入finally 代码块 122
8.4.4 扩展异常类 123
8.4.5 捕获多个异常 123
8.4.6 标准PHP 类库中的异常 125
8.5 PHP 7 中的错误处理 125
8.6 小结 126
第9 章 字符串与正则表达式 127
9.1 正则表达式 127
9.2 其他字符串专用函数 133
9.2.1 确定字符串的长度 134
9.2.2 比较两个字符串 134
9.2.3 处理字符串大小写 136
9.2.4 字符串与HTML 的转换 137
9.3 正则表达式函数的替代方式 141
9.3.1 根据预定义字符对字符串进行分词 141
9.3.2 根据预定义分隔符拆分字符串 142
9.3.3 将数组转换为字符串 142
9.3.4 解析复杂字符串 143
9.3.5 找出字符串最后出现的位置 143
9.3.6 将所有字符串实例替换为另一个字符串 144
9.3.7 提取部分字符串 144
9.3.8 根据预定义偏移量返回部分字符串 145
9.3.9 确定字符串出现的频率 145
9.3.10 将字符串的一部分替换为另一个字符串 146
9.3.11 填充和剥离字符串 146
9.3.12 字符与单词计数 147
9.4 小结 149
第 10 章 处理文件与操作系统 150
10.1 了解文件与目录 150
10.1.1 目录分隔符 150
10.1.2 解析目录路径 150
10.1.3 计算文件、目录和磁盘大小 152
10.1.4 确定访问时间和修改时间 155
10.2 处理文件 156
10.2.1 资源的概念 156
10.2.2 换行符 156
10.2.3 文件结束标志 156
10.2.4 打开与关闭文件 157
10.2.5 从文件读取 158
10.2.6 将字符串写入文件 164
10.2.7 移动文件指针 164
10.2.8 读取目录内容 165
10.3 运行shell 命令 166
10.3.1 删除目录 166
10.3.2 重命名文件 167
10.3.3 触摸文件 167
10.4 系统级程序执行 167
10.4.1 净化输入 167
10.4.2 PHP 程序执行函数 168
10.5 小结 170
第 11 章 第三方程序库 171
11.1 PEAR 简介 171
11.1.1 安装PEAR 171
11.1.2 更新PEAR 172
11.2 使用PEAR 包管理器 172
11.2.1 安装PEAR 包 172
11.2.2 自动安装所有依赖 173
11.2.3 查看已经安装的PEAR 包 173
11.3 Composer 介绍 173
11.3.1 安装Composer 173
11.3.2 使用Composer 174
11.4 使用C 程序库扩展PHP 175
11.5 小结 176
第 12 章 日期与时间 177
12.1 UNIX 时间戳 177
12.2 PHP 日期与时间库 177
12.2.1 验证日期 178
12.2.2 格式化日期和时间 178
12.2.3 将时间戳转换为用户友好的值 181
12.2.4 处理时间戳 181
12.3 日期处理 183
12.3.1 显示本地日期与时间 183
12.3.2 显示网页最近的修改日期 185
12.3.3 确定当前月份的天数 186
12.3.4 确定任意给定月份的天数 186
12.3.5 计算当前日期X 天后的日期 186
12.4 日期和时间类 187
12.4.1 DateTime 构造函数 187
12.4.2 格式化日期 187
12.4.3 在实例化之后设定日期 188
12.4.4 在实例化之后设定时间 188
12.4.5 修改日期和时间 188
12.4.6 计算两个日期之间的差 189
12.5 小结 189
第 13 章 表单 190
13.1 PHP 和Web 表单 190
13.2 验证表单数据 192
13.2.1 文件删除 192
13.2.2 跨站脚本 192
13.2.3 净化用户输入 193
13.2.4 使用Filter 扩展检验和净化数据 195
13.2.5 处理多值表单组件 197
13.3 小结 198
第 14 章 用户身份验证 199
14.1 HTTP 身份验证的概念 199
14.2 使用PHP 进行用户身份验证 200
14.2.1 PHP 身份验证变量 201
14.2.2 有用的函数 201
14.3 PHP 身份验证方法 202
14.3.1 硬编码身份验证 202
14.3.2 基于文件的身份验证 202
14.3.3 基于数据库的身份验证 204
14.4 用户登录管理 205
14.4.1 密码散列 205
14.4.2 一次性URL 和密码找回 206
14.5 使用OAuth 2.0 208
14.6 小结 209
第 15 章 处理文件上传 210
15.1 通过HTTP 上传文件 210
15.2 使用PHP 上传文件 211
15.2.1 PHP 文件上传及资源指令 211
15.2.2 $_FILES 数组 212
15.2.3 PHP 文件上传函数 212
15.2.4 上传中的错误消息 213
15.2.5 一个简单的例子 214
15.3 小结 215
第 16 章 网络 216
16.1 DNS、服务与服务器 216
16.1.1 DNS 216
16.1.2 服务 220
16.1.3 建立socket 连接 221
16.2 邮件 223
16.2.1 配置指令 223
16.2.2 使用PHP 脚本发送电子邮件 224
16.3 常见网络任务 226
16.3.1 ping 一台服务器 227
16.3.2 创建一个端口扫描程序 227
16.3.3 创建一个子网转换程序 228
16.4 小结 229
第 17 章 会话处理 230
17.1 什么是会话处理 230
17.2 配置指令 230
17.2.1 管理会话存储介质 231
17.2.2 设置会话文件路径 231
17.2.3 自动开启会话 231
17.2.4 设置会话名称 231
17.2.5 选择cookie 或URL 重写 232
17.2.6 设置会话cookie 的生命周期 232
17.2.7 设置会话cookie 的有效URL路径 232
17.2.8 设置缓存 233
17.3 使用会话 234
17.3.1 开始一个会话 234
17.3.2 销毁一个会话 234
17.3.3 设置和提取会话ID 234
17.3.4 创建和删除会话变量 235
17.3.5 会话数据的编码和解码 236
17.4 会话处理实例 237
17.4.1 返回用户的自动登录 237
17.4.2 生成近期查看的文档索引 239
17.5 创建定制的会话处理程序 240
17.5.1 将定制会话函数嵌入PHP 逻辑 241
17.5.2 使用基于MySQL 的定制会话处理程序 241
17.6 小结 243
第 18 章 Web 服务 244
18.1 为什么要使用Web 服务 244
18.2 从API 开始 244
18.3 API 安全性 248
18.4 创建API 249
18.5 小结 253
第 19 章 PHP 安全编程 254
19.1 PHP 安全配置 254
19.2 隐藏配置的详细信息 256
19.2.1 隐藏Apache 256
19.2.2 隐藏PHP 257
19.3 隐藏敏感信息 257
19.3.1 隐藏文档根目录 258
19.3.2 拒绝访问带有某种扩展名的文件 258
19.4 数据加密 258
19.4.1 PHP 加密函数 258
19.4.2 使用OpenSSL 加密数据 261
19.5 小结 263
第 20 章 PHP 与jQuery 的集成 264
20.1 Ajax 简介 264
20.2 jQuery 简介 265
20.2.1 安装jQuery 265
20.2.2 一个简单的例子 265
20.2.3 对事件做出响应 266
20.2.4 jQuery 和DOM 267
20.3 创建用户名存在性检验器 269
20.4 小结 272
第 21 章 MVC 与框架 273
21.1 MVC 简介 273
21.2 PHP 框架解决方案 274
21.2.1 CakePHP 框架 275
21.2.2 Symfony 框架 275
21.2.3 Zend 框架 275
21.2.4 Phalcon 框架 275
21.2.5 Laravel 框架 276
21.2.6 PHP 框架协作组织(PHP-FIG) 280
21.2.7 PSR-1 和PSR-2 编码规范 280
21.2.8 PSR-4 自动加载 281
21.3 小结 281
第 22 章 MySQL 简介 282
22.1 MySQL 为何如此流行 282
22.1.1 灵活性 282
22.1.2 能力 283
22.1.3 灵活的许可证选项 284
22.2 著名的MySQL 用户 284
22.2.1 Craigslist 284
22.2.2 Twitter 284
22.2.3 GitHub 284
22.2.4 其他著名用户 284
22.3 MariaDB:MySQL 的一种替代方案 285
22.4 小结 285
第 23 章 安装与配置MySQL 286
23.1 下载MySQL 286
23.2 安装MySQL 286
23.2.1 在Linux 上安装MySQL 287
23.2.2 在Windows 上安装与配置MySQL 289
23.3 启动与停止MySQL 290
23.4 配置与优化MySQL 291
23.4.1 mysqld_safe 包装器 291
23.4.2 MySQL 配置与优化参数 291
23.4.3 my.cnf 文件 294
23.5 配置PHP 与MySQL 一起工作 296
23.5.1 在Linux 上重新配置PHP 296
23.5.2 在Windows 上重新配置PHP 296
23.6 小结 296
第 24 章 MySQL 客户端程序 297
24.1 命令行工具简介 297
24.1.1 mysql 客户端程序 297
24.1.2 mysqladmin 客户端程序 304
24.1.3 其他有用的客户端程序 305
24.2 有用的GUI 客户端程序 307
24.3 phpMyAdmin 307
24.4 小结 308
第 25 章 MySQL 存储引擎和数据类型 309
25.1 存储引擎 309
25.1.1 InnoDB 310
25.1.2 MyISAM 310
25.1.3 MEMORY 311
25.1.4 MERGE 312
25.1.5 FEDERATED 312
25.1.6 ARCHIVE 313
25.1.7 CSV 313
25.1.8 EXAMPLE 313
25.1.9 BLACKHOLE 314
25.1.10 存储引擎FAQ 314
25.2 数据类型和属性 315
25.2.1 数据类型 315
25.2.2 数据类型属性 319
25.3 处理数据库和表 321
25.3.1 处理数据库 321
25.3.2 处理数据表 322
25.3.3 修改表结构 324
25.3.4 INFORMATION_SCHEMA 325
25.4 小结 327
第 26 章 MySQL 安全性 328
26.1 首先要做的事情 328
26.2 mysqld 守护进程的安全性 329
26.3 MySQL 访问权限系统 330
26.3.1 权限系统的工作原理 330
26.3.2 访问控制信息保存的位置 331
26.4 用户与权限管理 334
26.4.1 创建用户 334
26.4.2 删除用户 335
26.4.3 重命名用户 335
26.4.4 grant 和revoke 命令 335
26.4.5 查看权限 339
26.5 限制用户资源 339
26.6 安全的MySQL 连接 340
26.6.1 授权选项 340
26.6.2 SSL 选项 341
26.6.3 启动MySQL 服务器并启用SSL 342
26.6.4 启用客户端SSL 连接 342
26.6.5 保存SSL 选项到my.cnf 文件 342
26.7 小结 342
第 27 章 PHP 与MySQL 343
27.1 安装的前提条件 344
27.1.1 在Linux/UNIX 上启用mysqli 344
27.1.2 在Windows 上启用mysqli 344
27.1.3 使用MySQL Native Driver 344
27.1.4 管理用户权限 344
27.1.5 样本数据 345
27.2 使用mysqli 扩展 345
27.2.1 建立与断开连接 345
27.2.2 处理连接错误 346
27.2.3 提取错误信息 346
27.2.4 保存连接信息到单独的文件中 347
27.2.5 保证连接信息的安全性 348
27.3 与数据库交互 348
27.3.1 发送查询到数据库 348
27.3.2 解析查询结果 350
27.3.3 确定选取和影响的行 351
27.3.4 使用预处理语句 352
27.4 执行数据库事务 356
27.4.1 开启自动提交模式 356
27.4.2 提交事务 356
27.4.3 回滚事务 356
27.5 小结 357
第 28 章 PDO 介绍 358
28.1 另一种数据库抽象层吗 358
28.2 使用PDO 359
28.2.1 安装PDO 360
28.2.2 连接到数据库服务器并选择数据库 360
28.2.3 处理错误 362
28.2.4 获取和设置属性 363
28.2.5 执行查询 364
28.2.6 预处理语句介绍 365
28.2.7 提取数据 368
28.2.8 设置绑定列 370
28.2.9 处理事务 371
28.3 小结 372
第 29 章 存储例程 373
29.1 你应该使用存储例程吗 373
29.1.1 存储例程的优点 373
29.1.2 存储例程的缺点 373
29.2 MySQL 如何实现存储例程 374
29.2.1 创建一个存储例程 374
29.2.2 声明和设置变量 376
29.2.3 执行存储例程 377
29.2.4 创建并使用多语句存储例程 377
29.2.5 在一个存储例程中调用另一个存储例程 383
29.2.6 修改存储例程 384
29.2.7 删除存储例程 384
29.2.8 查看存储例程的状态 384
29.2.9 查看存储例程的创建语法 385
29.2.10 条件处理 386
29.3 在Web 应用中集成存储例程 386
29.3.1 创建雇员奖金接口 386
29.3.2 提取多个行 387
29.4 小结 388
第30 章 MySQL 触发器 389
30.1 触发器介绍 389
30.1.1 为什么使用触发器 389
30.1.2 在事件之前采取行动 390
30.1.3 在事件之后采取行动 390
30.1.4 before 触发器与after 触发器 391
30.2 MySQL 触发器支持 391
30.2.1 创建触发器 391
30.2.2 查看已有的触发器 392
30.2.3 修改触发器 394
30.2.4 删除触发器 394
30.3 集成触发器到Web 应用 395
30.4 小结 396
第31 章 MySQL 视图 397
31.1 视图介绍 397
31.2 MySQL 对视图的支持 398
31.2.1 创建并运行视图 398
31.2.2 查看视图信息 402
31.2.3 修改视图 404
31.2.4 删除视图 404
31.2.5 更新视图 404
31.3 集成视图到Web 应用 405
31.4 小结 406
第32 章 实用数据库查询 407
32.1 样本数据 407
32.2 创建表格化输出 407
32.2.1 安装HTML_Table 408
32.2.2 创建简单表格 408
32.2.3 创建可读性更好的行输出 409
32.2.4 根据数据库数据创建表格 410
32.3 输出排序 411
32.4 创建分页输出 412
32.5 列出页码 414
32.6 使用子查询查询多个表 415
32.6.1 使用子查询进行比较 416
32.6.2 使用子查询确定存在性 416
32.6.3 使用子查询进行数据库维护 417
32.6.4 在PHP 中使用子查询 417
32.7 使用游标迭代结果集合 418
32.7.1 游标的基础知识 418
32.7.2 创建游标 418
32.7.3 打开游标 418
32.7.4 使用游标 419
32.7.5 关闭游标 419
32.7.6 在PHP 中使用游标 420
32.8 小结 420
第33 章 索引与搜索 421
33.1 数据库索引 421
33.1.1 主键索引 421
33.1.2 唯一索引 422
33.1.3 普通索引 423
33.1.4 全文索引 424
33.1.5 索引最佳实践 427
33.2 基于表单的搜索 427
33.2.1 执行简单搜索 428
33.2.2 扩展搜索功能 429
33.2.3 执行全文搜索 430
33.3 小结 431
第34 章 事务 432
34.1 什么是事务 432
34.2 MySQL 事务功能 432
34.2.1 系统要求 432
34.2.2 表格创建 433
34.3 一个示例项目 433
34.3.1 创建表格并添加样本数据 434
34.3.2 执行示例事务 434
34.3.3 使用建议 436
34.4 使用PHP 创建事务型应用 436
34.5 小结 437
第35 章 导入与导出数据 438
35.1 样本表格 438
35.2 使用数据分隔 438
35.3 导入数据 439
35.3.1 使用LOAD DATA INFILE 导入数据 439
35.3.2 使用mysqlimport 导入数据 441
35.3.3 使用PHP 加载表数据 443
35.4 导出数据 444
35.5 小结 446
你还可能感兴趣
我要评论
|