Learning PHP, MySQL & JavaScript(第 7 版)— 全书拆解
Learning PHP, MySQL & JavaScript(第 7 版)— 全书拆解
30 秒导读: 这是一本 2025 年的零基础教材,回答一个问题: 一个能注册、能登录、能互动的网站,到底是怎么从一堆技术里拼出来的? 它的答案分四步:网页是浏览器与服务器的「问答」(第 1 章)→ 问答的两端各配 语言与数据库(PHP/MySQL)→ 浏览器端再配 JavaScript/CSS 让页面活起来 → 最后用一个社交网站项目把全部手艺焊成整体。 它真正的价值不在任何单项技术,而在那条贯穿全书的安全主线和 「先原语、后框架」的教学次序——原语指最基础、不可再拆的操作,先学会它们, 再看框架替你封装了哪一层。本组文档是我们重写的完整拆解,十三章, 读完不必看原书。
1. 这是谁在什么时候写的
| 作者 | Robin Nixon——英国技术作家,这本书从 2009 年初版一路更到第 7 版 |
| 成书时间 | 2025 年 1 月(O'Reilly 出版)——例子里 PHP 默认 8.2、Node.js 22、React 18,都是写书当时的快照 |
| 面向读者 | 会基本 HTML、其余零基础的自学者、学生、网页设计转型者 |
| 作者立场 | 长期实践者口吻:推荐 AMPPS、Visual Studio Code、PDO、组合优于继承——每条建议都带「为什么」 |
两件事读之前必须知道:
第一,这是一本「原教旨」教材。 第 20 章用浏览器内嵌脚本教 React、 第 21 章用裸 http 模块手搓服务器——刻意绕开了现代工程链路(构建工具、 Express、ORM)。这不是落伍,是选择:让你看见每一层在干什么。但照着它写的 东西不能直接上线,这是它的边界。
第二,书中的安全建议是好样板,安全实现是「最低体面」。 它把占位符、 htmlentities、密码哈希讲得很透,也在综合项目里逐条执行;但 CSRF、外键约束、 上传深防御这些课,它留白了——我们的拆解在每章「边界与局限」里逐条点出。
2. 全书一条主线(读完这一节,你就能把这本书讲给别人)
这本书的全部内容,是一条「把一个请求变成一次社交互动」的推理链。 每一步都是上一步逼出来的。
① 网页不是纸,是问答
你在浏览器看到的每个页面,都是「浏览器发问、服务器作答」的结果。 静态页答的是磁盘文件;要让每次答得不一样(动态),服务器端就需要两样东西: 一门现场算的语言(PHP),一个存数据的库(MySQL)。这就是书名的来源。[01]
② PHP:服务器上的算盘
动态的本质:PHP 代码在服务器上执行,把结果包进 HTML 发回—— 浏览器永远只收平平无奇的 HTML。学 PHP 就是学怎么算:存值、算数、做判断、重复执行、把代码收进函数和对象—— 第 3–7 章把语言从骨架教到工具箱。[02–05]
③ 会算不够,还得会存
数据要成体系地存:第 8 章带你建库建表、插查改删; 第 9 章回答「怎么设计才高效」——规范化(每条信息只存一次)、 事务(多步操作要么全成要么全不算)、备份(mysqldump)。[06–07]
④ 数据进出要过安检
PHP 替人敲 SQL 的那一刻,两条攻击路线同时打开: SQL 注入(数据被当命令执行)与 XSS(恶意脚本在别人浏览器里跑)。 全书的护身符只有两条,反复强调到最后一章:进数据库走占位符,出页面过 htmlentities。这两条在第 10 章定型,之后每个例子都在执行。[07、10]
⑤ 网站要认人
HTTP 没有记忆。「记住用户」只有两条技术路线:cookie(数据在浏览器, 用户可改,只能存偏好)和会话(数据在服务器,浏览器只拿一个随机 ID)。 配上密码哈希(password_hash 只存影子),登录态从此可信任; HTTP 认证、会话安全四件套(换 ID、仅 cookie、IP/UA 校验、私有目录)是加固清单。[08]
⑥ 浏览器侧的活法
PHP 管不了用户的屏幕——鼠标悬停、当场校验、不刷新取数,都得 JavaScript。 好消息:JS 与 PHP 是镜像语言(都从 C 继承语法),七成对照学; 三成新东西也清楚:DOM(页面是对象树)、弱类型与 truthy/falsy、 let/const 的作用域纪律。[09]
⑦ JS 的三件套收口
第 15 章给组织件(函数、对象、数组方法、箭头函数); 第 16 章把「JS 先验、PHP 复验」的双端验证立成规矩,正则表达式两边通用; 第 17 章的 fetch + Promise + JSON + CORS 让页面不刷新就能与服务器对话。[10]
⑧ 呈现与交互合龙
CSS 第 18 章:从盒模型、颜色、字体,到 transform/transition 动画, 再到 flexbox 与 Grid 两大布局——「看」的家当。 第 19 章:JS 读写样式、响应事件、增删 DOM、setTimeout/setInterval 驱动动画—— 「摸」的手艺。两章合起来,静态与动态之间的墙拆了。[11]
⑨ 现代化的一瞥,与合龙
第 20 章 React:同样的「数据 → 界面」思想,换成组件 + state 的声明式写法; 第 21 章 Node.js:同一门 JavaScript 搬到服务器,三十行起一个事件驱动的 web 服务器、npm 装 mysql2 查库——「一门语言写两端」的图景。 两章都在重复同一个判断:工具换了一轮又一轮,底层的原语纹丝不动。[12]
⑩ 终局:把它们焊在一起
第 22 章 Robin's Nest:十几个 PHP 文件 + 一个 CSS + 一个 JS, 实现注册(异步查重)、登录(哈希+会话)、资料(图片缩略)、好友(互粉求交)、 私信(公开/私密)。没有一行新魔法——它把前二十一章的每个「最小正确做法」 排成了一条流水线。[13]
一句话收尾
PHP 在服务器把数据算成 HTML,MySQL 把数据存住,会话认出是谁, JavaScript 让页面活起来,CSS 决定这一切长什么样—— 而「进占位符、出 htmlentities」这两条纪律,从第一行代码守到最后一行。
3. 十三章地图
这张表不用记任何术语 —— 每章的名字后面,写的是「读完你能回答什么」。
| 章 | 读完你就能回答 |
|---|---|
| 01 动态 Web 与开发环境 | 一次网页访问背后发生了几次问答?PHP、MySQL、JavaScript 各管哪一段? |
| 02 PHP 语言初识 | PHP 怎么嵌进网页?变量、字符串、作用域、超全局变量是怎么回事? |
| 03 表达式与控制流 | == 和 === 差在哪?if/switch/循环怎么用?网站为什么要拆模块? |
| 04 函数、对象与数组 | 代码怎么复用三层?include 家族怎么选?继承为什么不如组合? |
| 05 实用 PHP | 格式化输出、时间戳、文件读写上传、多人写文件怎么不打架? |
| 06 MySQL 基础 | 建库建表、选类型、加索引、SELECT 全家、两表缝合——一趟走完 |
| 07 MySQL 进阶与 PHP 访问 | 表该怎么设计(三范式)?多步操作怎么保证全成?PHP 怎么安全地替人敲 SQL? |
| 08 表单、Cookie 与会话 | 表单数据怎么进 PHP?网站怎么记住登录态?密码怎么存才安全? |
| 09 JavaScript 语言基础 | 会 PHP 怎么最快学会 JS?DOM 是什么?let/const 为什么取代 var? |
| 10 函数、验证与异步 | JS 校验为什么不可信?正则怎么用?fetch 怎么不刷新取数据?CORS 为什么拦我? |
| 11 CSS 与 JS 操作页面 | flexbox/Grid 怎么排版?悬停动画、时钟、动画都是怎么实现的? |
| 12 React 与 Node.js | 现代前端(组件+状态)和后端(事件驱动)长什么样?与手工作坊差在哪? |
| 13 综合项目 Robin's Nest | 一个社交网站如何从空库走到私信?「纪律清单」比功能清单值钱在哪? |
推荐顺序: 01 → 13 顺着读;这是原书设计好的次序。 只想拿结论的话:读本页第 2 节 + 07 (安全主线)+ 13(合龙)。
4. 这本书覆盖什么、不覆盖什么
覆盖(而且讲得比一般材料清楚)——读完你能:
- 讲清一次动态网页请求的完整旅程:DNS → 服务器 → PHP → MySQL → HTML;
- 从零写出 PHP 程序:变量到对象、文件到图片处理;
- 设计并查询一个规范化到 2NF/3NF 的数据库,会用事务与备份;
- 用 PDO 占位符与 htmlentities 搭起「能抵抗注入与 XSS」的输入输出管线;
- 实现完整的用户系统:注册(异步查重)、哈希密码、会话登录、安全登出;
- 用原生 JavaScript 完成表单校验、事件交互、fetch 异步通信;
- 用现代 CSS(flexbox/Grid/transition)排版与做动效;
- 看懂 React 与 Node.js 的原理演示,并知道它们各自通向哪个现代工具链。
不覆盖(别指望在这本里找):
| 缺什么 | 说明 |
|---|---|
| CSRF 防护 | 全书没有跨站请求伪造的令牌机制;综合项目的 GET 动作(加友/删消息)把这个缺口暴露得最直观 |
| 现代工程链路 | 构建工具(Vite/webpack)、Express 等框架、ORM、组件化前端工程——第 20、21 章是原理演示,不是生产模板 |
| React hooks | 只一句话提及;class 组件是第 20 章的教法,与现行 hooks 主流有代差 |
| 外键约束 | 讲了外键「概念」,没讲 FOREIGN KEY 约束;数据完整性靠应用代码自觉 |
| 测试 | 全书无一处单元/集成测试;功能验证全靠手工点击 |
| 深度主题 | 消息队列、缓存、WebSocket、部署运维、容器化——入门书的天花板,一字未提 |
5. 我们的判断
判断(我们的,不是书里的): 这本书今天最值钱的是结构与安全主线, 其次才是任何单项技术。第 1 章的「问答模型」、第 4 章的「模块化」、 第 7 章的「占位符进/htmlentities 出」、第 12 章的会话纪律—— 这四根桩二十年后仍然立得住;而 AMPPS 安装截图、Babel 页内编译、 裸 http 服务器这些具体做法,当作「原理演示」读,别当模板抄。 如果错,会错在: 低估了工具链抽象的厚度——有人可能跳过 Express/构建 工具直接写业务,结果书里手动加的那几道安全闸(路径校验、扩展名白名单、 会话加固)在大代码量下顾不过来;反过来,也有人可能因「原教旨」的朴素 而低估了它——没有亲手搭过原生层的人,学框架只是记配置。
判断(我们的,不是书里的): 「先原语、后框架」的次序是这本书对 「编程语言与系统研究」书库最大的价值:它提供了一个可亲手走通的基线—— 之后看任何框架(React、Laravel、Express),都能指出「它替我封装了哪一层」。 如果错,会错在: 对已经完全被团队框架锁死的读者,原生层的练习机会 不存在,这条价值会打折;但对要理解「系统如何运转」的研究者,基线越原始, 参照系越稳。
6. 许诺兑现表
本组文档中每一处「第 N 章讲」的指路,都在这张表里记一行、逐行核过。 核的是两件事:那一章真的讲了吗?讲的是不是许诺的那件事?
| 许诺在哪 | 许诺了什么 | 应兑现在哪 | 核过了吗 |
|---|---|---|---|
| 本页 §2 ② | PHP 语言各件 | 02–05 全部 | ✓ |
| 本页 §2 ③ | 数据库设计与查询 | 06–07 | ✓ |
| 本页 §2 ④ | 占位符/htmlentities 两条护身符 | 07 §5、10 §5 | ✓ |
| 本页 §2 ⑤ | cookie/会话/密码哈希 | 08 | ✓ |
| 本页 §2 ⑥⑦⑧ | JS 语言、三件套收口、CSS/JS 合龙 | 09、10、11 | ✓ |
| 本页 §2 ⑨ | React/Node 原理演示 | 12 | ✓ |
| 本页 §2 ⑩ | 综合项目合龙 | 13 | ✓ |
| 01 §2 | 「雨衣链路」各步 | 02(PHP)、06–07(MySQL)、10(fetch) | ✓ |
| 02 §13 | 「第 11、16 章用消毒纪律」 | 08 §2.3、10 §3 | ✓ |
| 05 §10.1 | 「这类数据该上数据库」 | 06 全章 | ✓ |
| 07 §4.5 | 「第 12 章补凭据管理」 | 08(PHP 侧)、12(Node 的 .env) | ✓ |
| 08 §12 | 「第 22 章放大这套用户系统」 | 13 §3–5 | ✓ |
| 10 §3.3 | 「第 16 章安全主线落点」 | 10 §3 即本章;08 是表单版 | ✓ |
| 11 §11.1 | 「React 里都有对应部件」 | 12 §5–6 | ✓ |
| 12 §12.1 | 「同样的六站用现代栈重写」 | 13 §9.1 的 P3 项 + 12 章边界 | ✓ |
拆解写于 2026-10-19,依据 2025 年第 7 版(O'Reilly)。原始书籍文件不入库;
本组文档是我们自己的重写;每条引用都可用 node scripts/book-verify.mjs learning-php-mysql-javascript-7e 回核。