标题：PHP快速入门及项目实战
图书简介
本书第1篇为基础篇（第1～8章），主要内容包括：PHP概述，PHP基础，PHP函数，PHP流程控制语句，PHP数组，Web技术，MySQL数据库和PHP数据库编程技术；第2篇为技能提高篇（第9～13章），主要内容包括字符串高级处理，日期和时间处理，图形图像处理，文件目录处理和面向对象编程；第3篇为高级应用篇（第14～17章），主要内容包括PDO数据库抽象层，Smarty模板，ThinkPHP框架和PHP的字符编码；第4篇为实战项目篇（第18章），通过模拟hao123网站，开发明日导航网站，以此来巩固所学基础知识，掌握应用ThinkPHP框架开发Web项目的精髓。
本书提供了大量的自学视频、源程序、素材，提供了相关的模块库、案例库、素材库、题库等多种形式的辅助学习资料，还提供迅速及时的微博、QQ、论坛等技术支持。前言这是一次入门图书内容编排上的改革，它缩短了读者从初学者到达程序员的距离，增强了读者成为程序设计师的信心。希望通过此次改革，能够探索出一条更快、更好的适合初学者的学习之路。本书内容本书在目录安排上做了大幅度的调整，打破了传统目录的点、线、面一体化的结构布局，让读者能够更快进入项目开发的状态中去。我们对基础知识讲解的内容进行了精简，让读者提前了解MySQL数据库，掌握PHP操作MySQL数据库的方法，熟悉PHP项目开发的基本流程，更快地体会项目开发成功带来的快感，提高读者学习的积极性。本书章目录与传统章目录的对比效果如下图所示。
按照传统的目录结构学习，属于按部就班、逐一学习各项技术，其过程相当枯燥，很难保证读者有继续学习下去的积极性。
我们相信新的目录结构安排不会出现这样的问题，因为当读者学习了本书前8章内容之后，就已经体会到成功的快感了，并且能够在后续的技能提高、高级应用中逐步巩固基础知识，学习新技术，最终成为一个合格的Web项目程序设计师。
本书涵盖了PHP编程从入门到项目开发所必备的知识，并且分篇进行讲解，使读者的学习更有针对性。
第1篇  基础篇（第1～8章）：主要内容包括PHP概述、PHP基础、PHP函数、PHP流程控制语句、PHP数组、Web技术、MySQL数据库和PHP数据库编程技术。通过本篇的学习，读者能够熟练掌握PHP语言编程的基础知识，并能开发一些小型项目，体会PHP项目开发基本流程，感受成功的喜悦。
第2篇  技能提高篇（第9～13章）：主要内容包括字符串高级处理，日期和时间处理，图形图像处理，文件、目录处理和面向对象编程。通过本篇的学习，读者可以巩固所学基础知识，掌握更多的PHP开发技术。
第3篇  高级应用篇（第14～17章）：主要内容包括PDO数据库抽象层、Smarty模板、ThinkPHP框架和PHP的字符编码。通过本篇的学习，读者可以学习到PHP目前最流行、最实用的技术。
第4篇  实战项目篇（第18章）：通过模拟hao123网站，开发明日导航网站，以此来巩固所学的基础知识，掌握应用ThinkPHP框架开发Web项目的精髓。书中按照项目功能阐述→系统功能结构设计→数据库设计→创建项目→项目发布的过程进行介绍，带领读者逐步亲身体验开发项目的全过程。本书特点* 技术新颖，讲解细致
全面、细致地展示PHP的基础知识，融入最新的PDO数据库抽象层、Smarty模板和ThinkPHP框架技术等内容，让读者能够真正学习到PHP最流行、最实用的技术。
* 实例丰富，贴近实际
在详细地讲解每个技术点的同时，以大量的示例和实例作为辅助，加深读者对知识的掌握，提高实践动手的能力。
* 动手实践，一体学习
每章都以上机演练和实战模拟栏目的形式，为读者提供丰富的实战练习题目，让读者能够亲自动手实践，体验编程带来的成就感，并且将答案放置于配套资源中。另外，读者还可以参考《PHP经典编程265例》一书，其中对本书上机演练和实战模拟栏目中所列的命题进行了完美的诠释。
* 注释详尽，视频讲解
为了便于读者更好地学习和使用本书，书中所有的代码都提供了详尽的注释，而且配套资源中提供了覆盖全书的语音视频讲解，读者可以通过视频快速、直观、轻松地学习。本书配套资源本书提供了内容丰富的配套资源，包括自学视频、源程序、素材，以及模块库、案例库、题库、素材库等多项辅助内容，读者朋友可以通过如下方式获取。
第1种方式：
（1）登录清华大学出版社的网站，在网页右上角的搜索文本框中输入本书书名（注意区分大小写和留出空格），或者输入本书关键字，或者输入本书ISBN号（注意去掉ISBN号间隔线“-”），单击“搜索”按钮。
（2）找到本书后单击超链接，在该书的网页下侧单击“网络资源”超链接，即可下载。
第2种方式：
访问本书的新浪微博PHPbook，找到配套资源的链接地址进行下载。
读者对象
?  大中专院校师生        ?  面临就业的学生
?  零基础学习人员               ?  相关培训机构的老师和学员
?  初中级程序开发人员            ?  准备从事软件开发工作的求职者
?  编程爱好者                    ?  立志编程的其他专业人士
图书目录
第1篇  基础篇第1章  PHP概述
（ 自学视频、源程序：配套资源） 2
1.1  如何学好PHP 3
1.1.1  什么是PHP 3
1.1.2  PHP版本 3
1.1.3  PHP的应用领域 4
1.1.4  PHP5的新特性 4
1.1.5  下载PHP及相关软件 5
1.1.6  代码编辑工具 6
1.1.7  下载PHP用户手册 7
1.2  环境的搭建 7
1.2.1  AppServ——Windows版PHP
集成化安装包 7
1.2.2  XAMPP——Linux版PHP
集成化安装包 10
上机演练 11
1.3  PHP开发环境的关键配置
信息 12
1.3.1  Apache服务器的基本
配置 12
1.3.2  php.ini文件的基本配置 12
1.4  解决PHP的常见配置问题 14
1.4.1  解决Apache服务器端口
冲突 15
1.4.2  设置PHP的系统当前时间 15
1.4.3  增加PHP扩展模块 15
本章摘要 15
习题 16
实战模拟 16
第2章  PHP基础
（ 自学视频、源程序：
配套资源） 18
2.1  PHP工作原理 19
2.2  PHP标记 20
上机演练 20
2.3  代码注释 21
2.3.1  使用PHP注释 21
2.3.2  有效使用注释 22
2.4  PHP常量 23
2.4.1  声明和使用常量 23
2.4.2  预定义常量 24
上机演练 25
2.5  PHP变量 26
2.5.1  声明变量 26
2.5.2  变量赋值 26
2.5.3  变量作用域 28
2.5.4  可变变量 29
2.6  PHP数据类型 30
2.6.1  标量数据类型 31
2.6.2  复合数据类型 34
2.6.3  特殊数据类型 35
2.6.4  转换数据类型 35
2.6.5  检测数据类型 36
上机演练 37
2.7  PHP的运算符 37
2.7.1  算术运算符 37
2.7.2  字符串运算符 38
2.7.3  赋值运算符 38
2.7.4  位运算符 39
2.7.5  自增或自减运算符 40
2.7.6  逻辑运算符 41
2.7.7  比较运算符 41
2.7.8  三元运算符 43
2.7.9  运算符的使用规则 43
上机演练 44
本章摘要 45
习题 45
实战模拟 46
第3章  PHP函数
（ 自学视频、源程序：
配套资源） 47
3.1  PHP函数 48
3.1.1  定义和调用函数 48
3.1.2  在函数间传递参数 48
3.1.3  从函数中返回值 50
3.1.4  变量函数 50
3.1.5  对函数的引用 51
3.1.6  取消引用 52
上机演练 52
3.2  PHP变量函数库 52
3.3  PHP字符串函数库 53
上机演练 55
3.4  PHP日期时间函数库 56
上机演练 57
3.5  PHP数学函数库 58
上机演练 59
3.6  PHP文件系统函数库 60
上机演练 62
3.7  MySQL函数库 63
上机演练 63
本章摘要 64
习题 64
实战模拟 65
第4章  PHP流程控制语句
（ 自学视频、源程序：
配套资源） 67
4.1  程序的3种控制结构 68
4.1.1  顺序结构 68
4.1.2  选择（分支）结构 68
4.1.3  循环结构 69
4.2  条件控制语句 69
4.2.1  if条件控制语句 69
4.2.2  switch多分支语句 71
上机演练 73
4.3  循环控制语句 73
4.3.1  while循环语句 74
4.3.2  do...while循环语句 75
4.3.3  for循环语句 76
4.3.4  foreach循环语句 77
上机演练 79
4.4  跳转语句 80
4.4.1  break跳转语句 80
4.4.2  continue跳转语句 81
上机演练 82
4.5  包含语句 82
4.5.1  include()语句 82
4.5.2  require()语句 83
4.5.3  include_once()语句 84
4.5.4  require_once()语句 84
4.5.5  include()语句和require()
语句的区别 86
上机演练 87
本章摘要 87
习题 87
实战模拟 89
第5章  PHP数组
（ 自学视频、源程序：
配套资源） 92
5.1  数组概述 93
5.2  数组类型 93
5.3  声明数组 94
5.3.1  用户创建数组 94
5.3.2  函数创建数组 95
5.3.3  创建二维数组 96
5.4  遍历、输出数组 96
5.4.1  遍历数组 96
5.4.2  输出数组元素 99
5.5  PHP数组函数 100
5.5.1  统计数组元素个数 100
5.5.2  向数组中添加元素 100
5.5.3  获取数组中最后一个元素 101
5.5.4  删除数组中重复元素 101
5.5.5  获取数组中指定元素的
键名 102
5.5.6  将数组中元素合成字符串 103
上机演练 103
本章摘要 104
习题 104
实战模拟 105
第6章  Web技术
（ 自学视频、源程序：
配套资源） 107
6.1  HTTP基础 108
6.2  变量 110
6.3  服务器信息 111
上机演练 113
6.4  表单处理 114
6.4.1  创建表单 114
6.4.2  添加表单元素 114
6.4.3  方法 119
6.4.4  对参数进行自动引号处理 121
6.4.5  自处理页面 121
6.4.6  粘性表单 123
6.4.7  多值参数 124
6.4.8  粘性多值参数 125
6.4.9  文件上传 127
6.4.10  表单验证 130
上机演练 131
6.5  设置响应头 132
6.5.1  不同的内容类型 133
6.5.2  重定向 134
6.5.3  设置过期时间 134
6.5.4  HTTP认证 134
6.5.5  文件下载 135
上机演练 135
6.6  维持状态 137
6.6.1  Cookie 138
6.6.2  会话 140
上机演练 145
本章摘要 147
习题 147
实战模拟 148
第7章  MySQL数据库
（ 自学视频、源程序：
配套资源） 150
7.1  MySQL概述 151
7.1.1  MySQL的特点 151
7.1.2  SQL和MySQL 151
7.2  MySQL服务器的启动和关闭 152
7.2.1  启动MySQL服务器 152
7.2.2  连接MySQL服务器 153
7.2.3  关闭MySQL服务器 154
7.3  操作MySQL数据库 154
7.3.1  创建新数据库 154
7.3.2  选择指定数据库 155
7.3.3  删除指定数据库 155
7.4  操作MySQL数据表 156
7.4.1  创建一个表 156
7.4.2  查看数据表结构 157
7.4.3  修改数据表结构 158
7.4.4  重命名数据表 159
7.4.5  删除指定数据表 160
7.5  操作MySQL数据 161
7.5.1  向数据表中添加数据
（INSERT） 161
7.5.2  更新数据表中的数据
（UPDATE） 162
7.5.3  删除数据表中的数据
（DELETE） 163
7.5.4  查询数据表中的数据
（SELECT） 163
7.6  MySQL数据类型 169
7.6.1  数字类型 169
7.6.2  字符串类型 170
7.6.3  日期和时间数据类型 171
7.7  phpMyAdmin管理MySQL
数据库 171
7.7.1  管理数据库 171
7.7.2  管理数据表 173
7.7.3  管理数据记录 175
7.7.4  导入和导出数据 177
本章摘要 180
习题 180
实战模拟 181
第8章  PHP数据库编程技术
（ 自学视频、源程序：
配套资源） 182
8.1  PHP操作MySQL数据库的
步骤 183
8.2  PHP操作MySQL数据库的
函数 183
8.2.1  mysql_connect()函数连接
MySQL服务器 183
8.2.2  mysql_select_db()函数选择
MySQL数据库 184
8.2.3  mysql_query()函数执行SQL
语句 184
8.2.4  mysql_fetch_array()函数将
结果集返回到数组中 185
8.2.5  mysql_fetch_row()函数从结果集
中获取一行作为枚举数组 186
8.2.6  mysql_num_rows()函数获取查
询结果集中的记录数 187
8.2.7  mysql_free_result()函数释放
内存 188
8.2.8  mysql_close()函数关闭连接 189
上机演练 189
8.3  管理MySQL数据库中的数据 190
8.3.1  向数据库中添加数据 190
8.3.2  浏览数据库中数据 191
8.3.3  编辑数据库数据 192
8.3.4  删除数据 194
8.3.5  批量删除数据 195
上机演练 197
本章摘要 198
习题 198
实战模拟 199第2篇  技能提高篇第9章  字符串高级处理
（ 自学视频、源程序：
配套资源） 202
9.1  初识字符串 203
9.2  转义、还原字符串 203
9.3  截取字符串 204
上机演练 206
9.4  分割、合成字符串 206
上机演练 207
9.5  替换字符串 208
9.5.1  str_ireplace()函数 208
9.5.2  substr_replace()函数 209
上机演练 209
9.6  检索字符串 210
9.6.1  strstr()函数 210
9.6.2  substr_count()函数 211
上机演练 212
9.7  去掉字符串首尾空格和特殊
字符 212
9.7.1  ltrim()函数 212
9.7.2  rtrim()函数 213
9.7.3  trim()函数 214
上机演练 214
9.8  字符串与HTML转换 214
上机演练 217
本章摘要 217
习题 218
实战模拟 218
第10章  日期和时间处理
（ 自学视频、源程序：
配套资源） 220
10.1  PHP的时间观念 221
10.1.1  在PHP.INI文件中设置
时区 221
10.1.2  通过date_default_timezone_set
函数设置时区 221
上机演练 221
10.2  UNIX时间戳 222
10.2.1  获取任意日期、时间的
时间戳 222
10.2.2  获取当前时间戳 223
10.2.3  日期、时间转换为UNIX
时间戳 223
上机演练 224
10.3  日期和时间处理 224
10.3.1  格式化日期和时间 225
10.3.2  获取日期和时间信息 226
10.3.3  检验日期和时间的有效性 227
上机演练 228
本章摘要 228
习题 228
实战模拟 229
第11章  图形图像处理
（ 自学视频、源程序：
配套资源） 231
11.1  了解GD2函数库 232
11.2  设置GD2函数库 232
11.3  常用图像处理技术 233
11.3.1  创建画布 233
11.3.2  颜色处理 233
11.3.3  绘制文字 234
11.3.4  输出图像 237
11.3.5  销毁图像 238
上机演练 238
11.4  运用Jpgraph类库绘制
图像 239
11.4.1  Jpgraph类库简介 239
11.4.2  Jpgraph类库的安装 239
11.4.3  柱形图分析产品月销
售量 240
11.4.4  折线图分析网站一天内的
访问走势 241
11.4.5  3D饼形图展示各部门不同
月份的业绩 243
上机演练 244
本章摘要 245
习题 245
实战模拟 246
第12章  文件、目录处理
（ 自学视频、源程序：
配套资源） 250
12.1  基本的文件处理 251
12.1.1  打开一个文件 251
12.1.2  读取文件内容 252
12.1.3  向文件中写入数据 257
12.1.4  关闭文件指针 258
上机演练 258
12.2  目录操作技术 259
12.2.1  打开指定目录 259
12.2.2  读取目录结构 260
12.2.3  关闭目录指针 261
上机演练 261
本章摘要 262
习题 262
实战模拟 263
第13章  面向对象编程
（ 自学视频、源程序：
配套资源） 265
13.1  一切皆是对象 266
13.1.1  什么是类 266
13.1.2  对象的由来 266
13.1.3  面向对象的特点 267
13.2  类的声明 267
13.2.1  类的定义 267
13.2.2  成员属性 268
13.2.3  成员方法 269
上机演练 269
13.3  类的实例化 270
13.3.1  创建对象 270
13.3.2  访问类中成员 271
13.3.3  特殊的访问方法——
“$this”和“::” 272
13.3.4  构造方法和析构方法 273
上机演练 274
13.4  面向对象的封装特性 275
13.4.1  public（公共成员） 275
13.4.2  private（私有成员） 275
13.4.3  protected（保护成员） 276
上机演练 277
13.5  面向对象的继承特性 278
13.5.1  类的继承——extends
关键字 278
13.5.2  类的继承——parent::
关键字 279
13.5.3  覆盖父类方法 279
上机演练 280
13.6  抽象类和接口 281
13.6.1  抽象类 281
13.6.2  接口 282
13.7  面向对象的多态性 284
13.7.1  通过继承实现多态 284
13.7.2  通过接口实现多态 285
13.8  面向对象的关键字 286
13.8.1  final关键字 286
13.8.2  static关键字——声明静态类
成员 286
13.8.3  clone关键字——克隆
对象 288
上机演练 289
13.9  面向对象的魔术方法 290
13.9.1  __set和__get方法 290
13.9.2  __isset和__unset方法 290
13.9.3  __call方法 291
13.9.4  __toString方法 291
13.9.5  __autoload方法 292
上机演练 293
本章摘要 293
习题 294
实战模拟 294第3篇  高级应用篇第14章  PDO数据库抽象层
（ 自学视频、源程序：
配套资源） 298
14.1  什么是PDO 299
14.1.1  PDO概述 299
14.1.2  PDO特点 299
14.1.3  安装PDO 299
14.2  PDO连接数据库 300
14.2.1  PDO构造函数 300
14.2.2  DSN详解 300
上机演练 301
14.3  PDO中执行SQL语句 302
14.3.1  exec方法 302
14.3.2  query方法 302
14.3.3  预处理语句——prepare和
execute 304
上机演练 305
14.4  PDO中获取结果集 306
14.4.1  fetch方法 306
14.4.2  fetchAll方法 308
14.4.3  fetchColumn方法 309
上机演练 310
14.5  PDO中捕获SQL语句中的
错误 310
14.5.1  使用默认模式——PDO::
ERRMODE_SILENT 310
14.5.2  使用警告模式——PDO::
ERRMODE_WARNING 312
14.5.3  使用异常模式——PDO::
ERRMODE_EXCEPTION 313
14.6  PDO中错误处理 314
14.6.1  errorCode方法 314
14.6.2  errorInfo方法 315
14.7  PDO中事务处理 316
14.8  PDO中存储过程 318
本章摘要 320
习题 320
实战模拟 321
第15章  Smarty模板
（ 自学视频、源程序：
配套资源） 322
15.1  走进Smarty模板引擎 323
15.1.1  Smarty模板引擎下载 323
15.1.2  Smarty模板引擎安装 324
15.1.3  Smarty模板引擎配置 324
15.1.4  Smarty模板的应用 326
上机演练 327
15.2  Smarty模板设计——静态页
处理 327
15.2.1  基本语法（注释、函数和
属性） 327
15.2.2  Smarty模板设计变量 328
15.2.3  变量调节器 329
15.2.4  内建函数（动态文件、
模板文件的包含和流程
控制语句） 330
15.2.5  自定义函数 332
15.2.6  配置文件 333
上机演练 334
15.3  Smarty程序设计——动态文件
操作 335
15.3.1  SMARTY_PATH常量 335
15.3.2  Smarty程序设计变量 336
15.3.3  Smarty方法 336
15.3.4  Smarty缓存 337
上机演练 339
本章摘要 340
习题 340
实战模拟 341
第16章  ThinkPHP框架
（ 自学视频、源程序：
配套资源） 343
16.1  ThinkPHP简介 344
16.1.1  ThinkPHP框架的特点 344
16.1.2  环境要求 344
16.1.3  下载ThinkPHP框架 345
16.2  ThinkPHP架构 346
16.2.1  ThinkPHP的目录结构 346
16.2.2  自动生成目录 347
16.2.3  项目目录部署方案 348
16.2.4  命名规范 348
16.2.5  项目构建流程 349
16.3  ThinkPHP的配置 351
16.3.1  配置格式 352
16.3.2  调试配置 352
16.4  ThinkPHP的控制器 353
16.4.1  控制器 353
16.4.2  跨模块调用 354
16.5  ThinkPHP的模型 358
16.5.1  模型的命名 358
16.5.2  实例化模型 359
16.5.3  属性访问 362
16.5.4  连接数据库 363
16.5.5  创建数据 366
16.5.6  连贯操作 367
16.5.7  CURD操作 368
上机演练 371
16.6  ThinkPHP的视图 373
16.6.1  模板定义 374
16.6.2  模板赋值 374
16.6.3  指定模板文件 374
16.6.4  特殊字符串替换 375
上机演练 376
16.7  内置ThinkTemplate模板
引擎 379
上机演练 381
本章摘要 384
习题 384
实战模拟 385
第17章  PHP的字符编码
（ 自学视频、源程序：
配套资源） 386
17.1  字符集和编码 387
17.1.1  ISO8859字符集 387
17.1.2  GB2312与GBK字
符集 387
17.1.3  Unicode字符集 388
17.1.4  UTF-8编码 388
上机演练 389
17.2  PHP网页的字符编码 389
17.2.1  设置编码格式 390
17.2.2  转换编码格式 390
17.2.3  检测字符串的编码 392
上机演练 393
17.3  PHP开发中的乱码问题 393
17.3.1  解决页面中的乱码问题 393
17.3.2  数据库中的字符集编码
问题 395
17.3.3  避免截取中文字符串时
出现乱码 396
上机演练 397
本章摘要 397
习题 397
实战模拟 398第4篇  实战项目篇第18章  明日导航网（PHP+ThinkPHP+
MySQL实现）
（ 自学视频、源程序：
配套资源） 400
18.1  项目设计思路 401
18.1.1  功能阐述 401
18.1.2  功能结构 401
18.1.3  系统预览 401
18.2  数据库设计 403
18.2.1  数据库设计 403
18.2.2  数据表设计 403
18.2.3  连接数据库 404
18.3  ThinkPHP架设项目结构 404
18.3.1  下载ThinkPHP框架 404
18.3.2  自动生成项目目录 405
18.4  明日导航前台页面设计 406
18.4.1  页面设计概述 406
18.4.2  控制器的创建 407
18.4.3  视图中应用到的模板标签 409
18.4.4  在视图中创建模板文件 411
18.5  明日导航后台管理设计 412
18.5.1  后台管理概述 412
18.5.2  通过系统配置文件存储
后台登录数据 413
18.5.3  后台管理架构解析 414
18.5.4  ThinkPHP框架中的分页
技术 414
18.5.5  后台管理视图中应用的
模板标签 415
18.5.6  后台登录 416
18.5.7  后台管理主页 417
18.5.8  高级类别管理 419
18.5.9  判断访问用户的权限 422
18.5.10  操作提示页面 423
项目发布 424
开发总结 424