PHP学习手册的目 录

第一篇 基础篇

第1章 了解PHP 18

1.1 什么是PHP 19

1.2 选择PHP的理由 19

1.3 如何学好编程 22

1.4 准备PHP的开发条件 24

1.4.1 下载PHP及相关软件 24

1.4.2 代码编辑工具 24

1.4.3 下载PHP用户手册 26

1.5 本章小结 26

第2章 准备开发PHP的条件 27

2.1 AppServ—Windows版PHP集成化安装包 28

2.1.1 用AppServ搭建PHP开发环境 28

2.1.2 测试AppServ是否安装成功 30

2.2 XAMPP—Linux版PHP集成化安装包 31

2.2.1 用XAMPP搭建PHP开发环境 32

2.2.2 在Linux操作系统下启动、停止XAMPP 33

2.2.3 设置Linux版XAMPP中MySQL数据库root用户的密码 33

2.2.4 在Linux操作系统下编写第一个PHP程序 33

2.3 PHP开发环境的关键配置信息 34

2.3.1 Apache服务器的基本配置 34

2.3.2 PHP.INI文件的基本配置 35

2.4 解决PHP的常见配置问题 36

2.4.1 解决Apache服务器端口冲突 36

2.4.2 更改Apache服务器

默认存储的文件路径 36

2.4.3 在PHP.INI文件中更改上传文件的大小 37

2.4.4 增加PHP扩展模块 37

2.4.5 检测PHP是否支持MySQL数据库 38

2.5 Dreamweaver开发工具 38

2.5.1 情景应用一——Dreamweaver中编码格式的选择 38

2.5.2 情景应用二——Dreamweaver创建表格 39

2.5.3 情景应用三——Dreamweaver创建表单 43

2.5.4 情景应用四——Dreamweaver创建站点 45

2.5.5 情景应用五——Dreamweaver创建第一个PHP程序 46

2.6 本章小结 47

第3章 了解Web页面的设计 48

3.1 XHTML基础 49

3.1.1 XHTML语言的语法 49

3.1.2 XHTML文件的结构 51

3.1.3 编辑文字版面 53

3.1.4 插入图像与链接 55

3.1.5 编写XHTML表格 57

3.1.6 设计XHTML表单 58

3.1.7 情景应用一——编写用户注册信息页 61

3.1.8 情景应用二:文件域上传文件 62

3.2 CSS样式应用 63

3.2.1 将CSS样式嵌入到HTML中 63

3.2.2 CSS选择符 65

3.2.3 常见的CSS样式属性 67

3.2.4 情景应用——打造经典的导航栏 72

3.3 设计页面布局 74

3.3.1 <div>和<span>标记 74

3.3.2 区块模型 74

3.3.3 区块浮动 75

3.3.4 情景应用——设置一行两列浮动布局 77

3.4 实战练习 78

3.4.1 CSS+DIV设计网站首页 78

3.4.2 DIV标签设计论坛后台管理页面 79

3.5 本章小结 81

第4章 PHP开发基础 82

4.1 PHP的工作原理 83

4.2 学习运用代码注释 83

4.2.1 使用PHP注释 84

4.2.2 使用HTML注释 84

4.2.3 有效使用注释 85

4.3 PHP的常量应用 85

4.3.1 声明和使用常量 85

4.3.2 预定义常量 87

4.4 PHP的变量应用 88

4.4.1 理解变量 88

4.4.2 声明变量 88

4.4.3 变量作用域 89

4.4.4 可变变量 91

4.5 PHP的数据类型 92

4.5.1 标量数据类型 92

4.5.2 复合数据类型 96

4.5.3 特殊数据类型 97

4.5.4 转换数据类型 98

4.5.5 检测数据类型 100

4.6 PHP的运算符 101

4.6.1 算术运算符 101

4.6.2 字符串运算符 102

4.6.3 赋值运算符 102

4.6.4 位运算符 103

4.6.5 递增或递减运算符 103

4.6.6 逻辑运算符 104

4.6.7 比较运算符 105

4.6.8 三元运算符 105

4.6.9 运算符的使用规则 106

4.7 PHP的自定义函数 107

4.7.1 定义和调用函数 108

4.7.2 在函数间传递参数 109

4.7.3 函数的返回值 110

4.8 实战练习 111

4.8.1 网站中最新动态模块的中文字符串截取 111

4.8.2 论坛发布内容模块中对内容的格式化输出 112

4.9 本章小结 113

第5章 PHP流程控制语句 115

5.1 程序三种控制结构 116

5.1.1 顺序结构 116

5.1.2 选择(分支)结构 116

5.1.3 循环结构 116

5.2 条件控制语句 117

5.2.1 if条件控制语句 117

5.2.2 switch多分支语句 119

5.2.3 情景应用一——if语句判断美女征婚条件 121

5.2.4 情景应用二——switch网页框架 122

5.3 循环控制语句 123

5.3.1 while循环语句 124

5.3.2 do...while循环语句 124

5.3.3 for循环语句 125

5.3.4 foreach循环语句 127

5.3.5 情景应用一——while语句循环读取数据库中数据 128

5.3.6 情景应用二——for循环语句开发一个乘法口诀表 129

5.4 跳转语句 130

5.4.1 break跳转语句 130

5.4.2 continue跳转语句 131

5.4.3 return跳转语句 132

5.5 包含语句 133

5.5.1 include()语句 133

5.5.2 require()语句 134

5.5.3 include_once()语句 135

5.5.4 require_once()语句 135

5.5.5 include()语句和require()语句的区别 136

5.5.6 include_once()语句和require_once()语句的区别 138

5.6 实战练习 138

5.6.1 删除数据库中指定的数据表 138

5.6.2 for循环语句实现多图片上传 139

5.7 本章小结 140

第6章 字符串操作 141

6.1 初识字符串 142

6.2 转义、还原字符串 142

6.3 截取字符串 143

6.4 分割、合成字符串 145

6.5 替换字符串 146

6.5.1 str_ireplace()函数 146

6.5.2 substr_replace()函数 148

6.6 检索字符串 148

6.6.1 strstr()函数 148

6.6.2 substr_count()函数 149

6.7 去掉字符串首尾空格和特殊字符 150

6.7.1 ltrim()函数 150

6.7.2 rtrim()函数 151

6.7.3 trim()函数 152

6.8 字符串与HTML转换 152

6.9 情景应用 154

6.9.1 超长文本的分页输出 154

6.9.2 查询关键字描红 155

6.9.3 购物车中数据的读取 156

6.10 实战练习 157

6.10.1 PHP 5新型字符串输出XML数据信息 157

6.10.2 图像验证码的相关操作 158

6.11 本章小结 159

第7章 正则表达式 160

7.1 什么是正则表达式 161

7.2 正则表达式的语法规则 162

7.2.1 行定位符(^和$) 162

7.2.2 单词定界符(\b、\B) 162

7.2.3 字符类([ ]) 163

7.2.4 选择字符(|) 163

7.2.5 连字符(-) 163

7.2.6 排除字符([^]) 164

7.2.7 限定符(? * + {n,m}) 164

7.2.8 点号字符(.) 164

7.2.9 转义字符(\) 165

7.2.10 反斜线(\) 165

7.2.11 括号字符(()) 166

7.2.12 情景应用一——整合实用的正则表达式 166

7.2.13 情景应用二——调用正则表达式验证中文 168

7.3 PCRE兼容正则表达式函数 169

7.3.1 字符串的匹配与查找 169

7.3.2 情景应用一——应用正则表达式匹配电话号码格式 170

7.3.3 字符串的替换 172

7.3.4 情景应用二——应用正则表达式实现UBB使用帮助 173

7.3.5 字符串的分割 173

7.4 实战练习 174

7.4.1 正则表达式验证用户

7.4.1 注册信息的合理性 174

7.4.2 正则表达式验证提交的

7.4.1 购买数量是否是正整数 176

7.5 本章小结 177

第8章 初探数组 178

8.1 数组概述 179

8.2 数组类型 179

8.3 声明数组 180

8.3.1 用户创建数组 180

8.3.2 函数创建数组 181

8.3.3 创建二维数组 181

8.4 遍历、输出数组 182

8.4.1 遍历数组 183

8.4.2 输出数组元素 184

8.5 PHP的数组函数 185

8.5.1 统计数组元素个数 185

8.5.2 向数组中添加元素 185

8.5.3 获取数组中最后一个元素 186

8.5.4 删除数组中重复元素 186

8.5.5 获取数组中指定元素的键名 186

8.5.6 字符串与数组的转换 187

8.5.7 情景应用——读取网上调查中的数据 188

8.6 PHP的全局数组 189

8.6.1 $_SERVER[ ]全局数组 189

8.6.2 $_GET[ ]和$_POST[ ]全局数组 190

8.6.3 $_COOKIE全局数组 190

8.6.4 $_ENV[ ]全局数组 191

8.6.5 $_REQUEST[ ]全局数组 191

8.6.6 $_SESSION[ ]全局数组 191

8.6.7 $_FILES[ ]全局数组 191

8.6.8 情景应用——$_FILES[ ]全局数组在文件上传中的应用 191

8.7 实战练习 193

8.7.1 生成在线考试题 193

8.7.2 通过获取客户端IP地址限制投票次数 193

8.8 本章小结 195

第9章 日期与时间 196

9.1 PHP的时间观念 197

9.1.1 在PHP.INI文件中设置时区 197

9.1.2 通过date_default_timezone_set函数设置时区 197

9.2 UNIX时间戳 198

9.2.1 获取任意日期、时间的时间戳 198

9.2.2 获取当前时间戳 199

9.2.3 日期、时间转换为UNIX时间戳 199

9.3 日期和时间处理 201

9.3.1 格式化日期和时间 201

9.3.2 获取日期和时间信息 202

9.3.3 检验日期和时间的有效性 203

9.4 情景应用 204

9.4.1 获取系统当前时间和时间戳 204

9.4.2 比较两个时间的大小 204

9.4.3 倒计时 205

9.5 实战练习 205

9.5.1 计算程序的运行时间 205

9.5.2 网页闹钟 206

9.6 本章小结 207

第二篇 核心篇

第10章 文件和目录处理技术 210

10.1 基本的文件处理技术 211

10.1.1 打开一个文件 211

10.1.2 读取文件内容 214

10.1.3 向文件中写入数据 218

10.1.4 关闭文件指针 220

10.2 目录操作技术 220

10.2.1 打开指定目录 220

10.2.2 读取目录结构 221

10.2.3 关闭目录指针 222

10.3 文件的上传技术 223

10.3.1 开启文件上传功能 223

10.3.2 全局变量$_FILES应用 224

10.3.3 将上传文件移动到指定目录 225

10.3.4 文件下载技术 226

10.4 情景应用 227

10.4.1 通过文本文件统计网站访问量 227

10.4.2 规范化的文件上传 229

10.5 实战练习 231

10.5.1 从文本文件中读取注册服务条款 231

10.5.2 规范化的多文件上传 232

10.6 本章小结 233

第11章 图形图像处理技术 234

11.1 了解GD2函数库 235

11.2 设置GD2函数库 235

11.3 学习常用的图像处理技术 235

11.3.1 创建画布 236

11.3.2 颜色处理 237

11.3.3 绘制文字 237

11.3.4 输出图像 239

11.3.5 销毁图像 240

11.3.6 情景应用一——在照片上书写文字 240

11.3.7 情景应用二——GD2函数生成图像验证码 241

11.4 运用Jpgraph类库绘制图像 242

11.4.1 Jpgraph类库简介 242

11.4.2 Jpgraph的安装 242

11.4.3 情景应用一——柱状图展示2010年第一季度编程词典销量 243

11.4.4 情景应用二——折线图分析2010年公司销售额 245

11.4.5 情景应用三——多饼形图分析2010年图书销量 246

11.5 实战练习 248

11.5.1 GD2函数生成带有干扰线的图像验证码 248

11.5.2 Jpgraph创建折线图分析图书销售走势 249

11.5.3 Jpgraph创建3D饼形图展示部门业绩比较 250

11.6 本章小结 251

第12章 Cookie和会话控制 252

12.1 会话的操作 253

12.1.1 创建会话 253

12.1.2 配置PHP的会话 255

12.2 会话的高级应用 259

12.2.1 SESSION临时文件 259

12.2.2 SESSION缓存 259

12.2.3 SESSION数据库存储 261

12.3 Cookie的操作 263

12.3.1 设置Cookie 264

12.3.2 访问Cookie 265

12.3.3 删除Cookie 266

12.4 情景应用 267

12.4.1 登录验证 267

12.4.2 Cookie自动登录 269

12.5 实战练习 270

12.5.1 防止页面刷新 270

12.5.2 控制客户端Cookie 271

12.6 本章小结 272

第13章 面向对象 273

13.1 一切皆是对象 274

13.1.1 什么是类 274

13.1.2 对象的由来 274

13.1.3 面向对象的特点 275

13.2 类的声明 275

13.2.1 类的定义 275

13.2.2 成员属性 276

13.2.3 成员方法 277

13.3 类的实例化 277

13.3.1 创建对象 278

13.3.2 访问类中成员 278

13.3.3 特殊的访问方法——“$this”和“::” 279

13.3.4 构造方法和析构方法 280

13.4 面向对象的封装特性 281

13.4.1 public(公***成员) 282

13.4.2 private(私有成员) 282

13.4.3 protected(保护成员) 283

13.5 面向对象的继承特性 283

13.5.1 类的继承——extends关键字 283

13.5.2 类的继承——parent::关键字 284

13.5.3 覆盖父类方法 285

13.6 抽象类和接口 286

13.6.1 抽象类 286

13.6.2 接口 287

13.7 面向对象的多态性 289

13.7.1 通过继承实现多态 289

13.7.2 通过接口实现多态 290

13.8 面向对象的关键字 290

13.8.1 final关键字 291

13.8.2 static关键字——声明静态类成员 291

13.8.3 clone关键字——克隆对象 292

13.8.4 对象比较 293

13.8.5 instanceof关键字——对象类型检测 293

13.9 面向对象的魔术方法 293

13.9.1 _set()和_get()方法 294

13.9.2 _isset()和_unset()方法 294

13.9.3 _call()方法 294

12.9.4 _toString()方法 295

13.9.5 _autoload()方法 295

13.9.6 情景应用一——封装一个数据库连接类 296

13.9.7 情景应用二——封装一个数据库操作类 297

13.10 实战练习 298

13.10.1 分页类 299

13.10.2 万用表格 300

13.11 本章小结 301

第14章 MySQL数据库设计 302

14.1 MySQL概述 303

14.1.1 MySQL的特点 303

14.1.2 SQL和MySQL 303

14.2 MySQL服务器的启动和关闭 304

14.2.1 启动MySQL服务器 304

14.2.2 连接MySQL服务器 305

14.2.3 关闭MySQL服务器 305

14.3 操作MySQL数据库 306

14.3.1 创建新数据库 306

14.3.2 选择指定数据库 306

14.3.3 删除指定数据库 306

14.4 操作MySQL数据表 307

14.4.1 创建一个表 307

14.4.2 查看数据表结构 308

14.4.3 修改数据表结构 309

14.4.4 重命名数据表 310

14.4.5 删除指定数据表 310

14.5 操作MySQL数据 311

14.5.1 向数据表中添加数据(INSERT) 311

14.5.2 更新数据表中数据(UPDATE) 312

14.5.3 删除数据表中数据(DELETE) 312

14.5.4 查询数据表中数据 313

14.5.5 情景应用一——数据排序 316

14.5.6 情景应用二——limit控制输出数据的开始位置和记录数 316

14.6 MySQL数据类型 316

14.6.1 数字类型 317

14.6.2 字符串类型 317

14.6.3 日期和时间数据类型 319

14.7 用phpMyAdmin管理MySQL数据库 319

14.7.1 管理数据库 319

14.7.2 管理数据表 320

14.7.3 管理数据记录 322

14.7.4 导入/导出数据 324

14.8 实战练习 325

14.8.1 批量添加记录(LOAD DATA和MYSQLIMPORT) 325

14.8.2 在phpMyAdmin中重置MySQL服务器登录密码 326

14.9 本章小结 326

第15章 数据库编程技术 327

15.1 PHP操作MySQL数据库的步骤 328

15.2 PHP操作MySQL数据库的方法 329

15.2.1 mysql_connect()函数连接MySQL服务器 329

15.2.2 mysql_select_db()函数选择MySQL数据库 330

15.2.3 mysql_query()函数执行SQL语句 330

15.2.4 mysql_fetch_array()函数将结果集返回到数组中 331

15.2.5 mysql_fetch_row()函数从结果集中获取一行作为枚举数组 333

15.2.6 mysql_num_rows()函数获取查询结果集中的记录数 333

15.3 管理MySQL数据库中的数据 334

15.3.1 向数据库中添加数据 334

15.3.2 编辑数据库数据 335

15.3.3 从数据库中删除数据 336

15.3.4 批量数据操作 336

15.4 情景应用 337

15.4.1 通用查询 337

15.4.2 分组统计 338

15.4.3 对查询结果分页显示 339

15.4.4 站内搜索 340

15.5 实战练习 341

15.5.1 对查询结果进行跳转分页显示 341

15.5.2 高级查询 341

15.6 本章小结 342

第三篇 高级篇

第16章 PDO数据库抽象层 346

16.1 什么是PDO 347

16.1.1 PDO概述 347

16.1.2 PDO特点 347

16.1.3 安装PDO 347

16.2 PDO连接数据库 348

16.2.1 PDO构造函数 348

16.2.2 情景应用一——连接MySQL数据库 348

16.2.3 情景应用二——连接MS SQL Server数据库 349

16.2.4 情景应用三——连接Oracle数据库 350

16.3 PDO中执行SQL语句 350

16.3.1 exec()方法 351

16.3.2 query()方法 351

16.3.3 预处理语句——prepare()和execute() 352

16.3.4 情景应用一——通过PDO向数据库中添加数据 353

16.3.5 情景应用二——通过PDO更新数据库中数据 354

16.4 PDO中获取结果集 355

16.4.1 fetch()方法 355

16.4.2 fetchAll()方法 357

16.4.3 fetchColumn()方法 358

16.5 PDO中捕获SQL语句中的错误 359

16.5.1 使用默认模式——PDO::ERRMODE_SILENT 359

16.5.2 使用警告模式——PDO::ERRMODE_WARNING 360

16.5.3 使用异常模式——PDO::ERRMODE_EXCEPTION 361

16.6 PDO中错误处理 362

16.6.1 errorCode()方法 362

16.6.2 errorInfo()方法 363

16.7 PDO中事务处理 364

16.8 PDO中存储过程 366

16.9 实战练习 367

16.9.1 PDO读取MS SQL Server数据库中数据 367

16.9.2 PDO读取Oracle数据库中数据 368

16.10 本章小结 369

第17章 ADODB数据库抽象层 370

17.1 ADODB概述 371

17.1.1 ADODB的优点与缺点 371

17.1.2 ADODB的安装与操作流程 371

17.2 连接数据库系统和数据库 372

17.2.1 连接数据库系统——ADONewConnection()函数 372

17.2.2 数据库持久化连接——PConnect()函数 372

17.2.3 数据库非持久化连接——Connect()函数 372

17.2.4 情景应用一——ADODB连接MySQL数据库 373

17.2.5 情景应用二——ADODB连接Access数据库 374

17.2.6 情景应用三——ADODB连接MS SQL Server数据库 374

17.2.7 情景应用四——ADODB连接Oracle数据库 375

17.3 通过公***变量控制数据的存取方式 376

17.4 ADODB执行SQL语句 377

17.4.1 执行SQL语句——execute()函数 377

17.4.2 控制SELECT查询语句的起始位置——SelectLimit()函数 378

17.4.3 添加、更新数据——GetInsertSQL()、GetUpdateSQL()函数 379

17.4.4 操作SQL语句的其他方法 380

17.5 ADODB控制结果集 380

17.5.1 控制指针的方法 381

17.5.2 控制结果集内容的方法 382

17.5.3 日期格式和数据类型的转换 383

17.6 ADODB中的分页 384

17.6.1 ADODB分页函数 384

17.6.2 一个小巧的分页函数——ADODB_Pager()函数 385

17.7 ADODB中的错误处理 386

17.7.1 ADODB中的错误处理函数 386

17.7.2 ADODB中自定义的错误处理机制 387

17.7.3 情景应用——通过日志文件存储错误信息 388

17.8 ADODB中的事务处理 389

17.9 实战练习 390

17.9.1 封装ADODB连接数据库类 390

17.9.2 封装ADODB操作数据库类 391

17.9.3 封装ADODB分页类 392

17.9.4 通过事务处理机制保证数据转换的顺利完成 393

17.10 本章小结 395

第18章 PHP的字符编码 396

18.1 了解网页字符编码 397

18.1.1 ASCII 字符集 397

18.1.2 ISO 8859 字符集 397

18.1.3 GB2312与GBK编码 398

18.1.4 Unicode字符集 398

18.1.5 UTF-8编码 398

18.2 PHP网页的字符编码 399

18.2.1 设置编码格式 399

18.2.2 转换编码格式 400

18.2.3 检测字符串的编码 402

18.3 PHP开发中的乱码问题 403

18.3.1 解决页面中的乱码问题 403

18.3.2 数据库中的字符集编码问题 405

18.3.3 避免截取中文字符串时出现乱码 406

18.4 PHP区域化设置 407

18.4.1 PHP网页的区域化 407

18.4.2 使用setlocale()函数设置区域化 408

18.5 实战练习 409

18.5.1 避免截取超长文本时出现乱码 409

18.5.2 了解PHP编码规则 410

18.5.3 了解PHP编码风格 410

18.6 本章小结 412

第19章 程序调试与错误处理 413

19.1 基本调试策略 414

19.2 常见错误分析 414

19.2.1 语法错误 414

19.2.2 定义错误 417

19.2.3 逻辑错误 418

19.2.4 运行错误 419

19.2.5 环境错误 421

19.3 PHP.INI中的错误处理机制 422

19.3.1 控制错误显示及显示方式 423

19.3.2 控制错误的级别 423

19.4 程序调试方法 424

19.4.1 应用DIE语句调试 424

19.4.2 应用mysql_error()语句输出错误信息 425

19.4.3 应用try{}catch{}M语句抛出并捕获异常 425

19.5 错误处理技巧 427

19.5.1 隐藏错误 427

19.5.2 自定义错误页面 427

19.5.3 延长服务器执行时间——处理超时错误 428

19.6 情景应用 429

19.6.1 如何分析、解决PHP与MySQL连接错误 429

19.6.2 解决数据库乱码问题 431

19.7 实战练习 432

19.7.1 封装属于自己的异常处理类 432

19.7.2 使用错误处理器记录日志 433

19.8 本章小结 434

第20章 Smarty模板技术 435

20.1 走进Smarty模板引擎 436

20.1.1 Smarty模板引擎下载 437

20.1.2 Smarty模板引擎安装 437

20.1.3 Smarty模板引擎配置 437

20.1.4 情景应用一——走进Smarty模板引擎 439

20.1.5 情景应用二——封装Smarty模板的配置方法 440

20.2 Smarty模板设计——静态页处理 442

20.2.1 基本语法(注释、函数和属性) 442

20.2.2 Smarty模板设计变量 443

20.2.3 变量调节器 444

20.2.4 情景应用一——Smarty模板中日期、时间的格式化输出 445

20.2.5 情景应用二——通过组合修改器分隔多个变量调节器 445

20.2.6 内建函数(动态文件、模板文件的包含和流程控制语句) 446

20.2.7 情景应用三——Smarty模板创建网页框架 448

20.2.8 情景应用四——section语句循环输出数据库中的数据 450

20.2.9 自定义函数 451

20.2.10 配置文件 454

20.3 Smarty程序设计——动态文件操作 455

20.3.1 SMARTY_PATH常量 455

20.3.2 Smarty程序设计变量 455

20.3.3 Smarty方法 456

20.3.4 Smarty缓存 456

20.3.5 情景应用——开启网站注册页面的缓存 458

20.4 实战练习 460

20.4.1 Smarty+ADODB完成数据的分页输出 460

20.4.2 Smarty中通过truncate方法截取字符串 461

20.4.3 用Register_Function方法注册模板函数 462

20.4.4 Smarty模板中的关键字描红 464

20.5 本章小结 464

第四篇 实战篇

第21章 企业网站开发模板 466

21.1 明日企业网概述 467

21.2 开发背景 467

21.3 需求分析 467

21.4 功能结构 468

21.5 数据库设计 469

21.5.1 数据库概念设计 469

21.5.2 创建数据库及数据表 470

21.6 技术攻关 471

21.6.1 Smarty模板 471

21.6.2 最简单的网页框架 473

21.6.3 ADODB类库 473

21.6.4 封装分页类 474

21.7 首页设计 475

21.7.1 首页概述 475

21.7.2 首页技术分析 476

21.7.3 首页的实现过程 476

21.8 产品展示设计 478

21.8.1 产品展示概述 478

21.8.2 产品展示技术分析 478

21.8.3 产品展示实现过程 479

21.9 后台管理系统设计 480

21.9.1 后台管理系统概述 481

21.9.2 后台管理系统技术分析 481

21.9.3 后台管理系统实现过程 482

21.10 程序调试与错误处理 486

21.10.1 SQL语句的返回机制 486

21.10.2 错误处理 487

21.11 开发总结 488

附录 专业术语表 489