PHP课程 - 第2课 - 文件操作:打开、写入与读取。
在上一课中,我们已经为我们的留言簿、博客或聊天室搭建了框架。现在只需继续添加功能。在本课中,我们将学习如何将我们的内容写入文件,并从文件中读取内容。
PHP 提供了大量用于文件操作的函数,我们只会学习其中一部分。因为在实际项目中,你的网站大多数情况下会将数据保存到数据库中(我非常确定),而不是写入文件。不过,了解文件操作的原理有助于理解 PHP 的基本机制。之后我们会学习如何操作数据库。
如果你还没有上节课创建的那些文件,请先返回上一课并下载它们。
现在让我们进入添加记录的表单:
/index.php?admin=1
我们将通过这个表单来添加内容。要处理提交的数据,我们需要在 index.php 页面上检查是否存在 $_POST 变量。检查方法非常简单:
PHP课程 - 第3课 - 使用 MySQL 数据库。
你可能觉得现在开始第三课直接学习 MySQL 数据库有点早,但相信我并不是这样。学习 PHP 作为一种 Web 编程语言而不学习它与数据库的交互,就像有一台没有互联网的电脑。你可以在这样的电脑上工作,但却无法获取任何信息。因此,让我们鼓起勇气,即使现在对 SQL 一无所知,也要开始编写数据库查询语句吧。
SQL(Structured Query Language —— “结构化查询语言”)是一种通用的计算机语言,用于在关系型数据库中创建、修改和管理数据。SQL 基于表中记录的集合操作。
PHP 可以与多种数据库一起工作,例如:MySQL、PostgreSQL、Oracle 等等。我们将学习 PHP 与 MySQL 的配合,因为这种组合在网站开发中最为常见。同时,学习 MySQL 的操作也能让你轻松掌握其他数据库的使用,因为 SQL 是一种通用语言,几乎所有关系型数据库的语法都相似。
PHP课程 - 第3.1课 - 使用 MySQL 数据库。创建数据表。
在上一课中,我们学习了如何与数据库建立连接。本课我们将为我们未来的网站创建数据表。首先,在 simpleCMS 类中添加数据库名称:
class simpleCMS { // 管理类 public $host = 'localhost'; // 数据库连接变量 public $username = 'root'; public $password = ''; public $db = 'testDB';
现在我们需要在 MySQL 服务器上创建这个数据库。如果你使用的是 Denwer,本地环境已经包含了 phpMyAdmin。打开 phpMyAdmin 并创建一个新数据库:
PHP课程 - 第3.2课 - 使用 MySQL 数据库。INSERT INTO 插入数据与 SELECT 查询数据。
在上一课中,我们为我们的网站创建了一个数据库表。在本课中,我们将改进该表,并开始与数据库交互:向其中插入数据以及从表中读取数据。我想这并不复杂,所以让我们开始吧。
首先,我建议改进一下我们的 messages 表。目前表中已经有了数据字段,但我们还需要一个用于记录编号的字段。如果你打开 Drupal 的数据库,会发现 node 表中有一个 nid 字段,用来编号节点。同样,我们也需要在 messages 表中添加这样的编号字段。
让我们进入 phpMyAdmin(在 Denwer 中为 http://localhost/tools/phpmyadmin)并编辑表格。在表的开头添加一列,如下图所示:
PHP课程 - 第3.3课 - 使用 MySQL 数据库。UPDATE 更新数据。
我们已经学习了 MySQL 的 SELECT 和 INSERT INTO 操作符,现在是时候了解如何更新已存入数据库的数据了。为此,我们将使用 SQL 操作符 UPDATE。但首先,我们需要修改 index.php 文件,添加一个新的路径处理。找到如下代码:
if( $_GET['admin'] == 1 ){ // 如果 URL 中存在 admin 参数 print $obj->display_admin(); // 如果存在该参数,显示添加表单 }else{ print $obj->display_public(); // 如果没有该参数,显示消息 }
将其替换为以下代码:
PHP课程 - 第3.4课 - 使用 MySQL 数据库。DELETE 删除查询。
在上一课中,我们学习了如何向我们的管理类 simpleCMS 添加新方法,现在让我们再添加一个用于删除记录的方法 delete()。
我们像往常一样添加方法:
public function delete($mid){ }
正如你所见,我们传递了一个参数 $mid —— 即记录的 ID。回想上一课,我们决定使用另一种方式传递参数,即直接通过 GET 请求,而这次我们将尝试用另一种方式传参。
方法已定义好,现在在 index.php 文件中编写路径处理:
PHP课程 - 第3.5课 - 使用 MySQL 数据库。JOIN 操作符。文件上传到服务器。
在开始编写本课之前,我思考了很久该如何更好地讲解带有 JOIN 操作符的查询。事实上,JOIN 操作符用于同时从多个表中进行查询。既然我们需要另一个表,那就先创建它。我建议创建一个用于保存文件的表,我们将在本课中通过表单上传这些文件。这样,本课就会结合两个方向——数据库操作与表单处理。
我们先从添加文件上传字段开始。为了让表单能够上传文件,需要在其参数中添加表单类型:
$content .= '<form action="' . $_SERVER['PHP_SELF'] . '" method="post" enctype="multipart/form-data">';
通过 enctype 参数,我们告诉浏览器该表单将用于文件上传。现在表单已准备好,我们来添加文件上传字段:
PHP课程 - 第3.6课 - 使用MySQL数据库。JOIN操作符的类型。
在 MySQL 中,可以通过多种方式使用 JOIN 进行数据选择。我们将尝试逐一讲解所有这些类型的查询。以下是所有涉及 JOIN 的查询列表:
- INNER JOIN(内连接)
- LEFT JOIN(左连接)
- LEFT JOIN(不与右表交集的左连接)
- RIGHT JOIN(右连接)
- RIGHT JOIN(不与左表交集的右连接)
- FULL OUTER JOIN(全外连接)
- FULL OUTER JOIN(左表或右表为空时)
以下是这些 JOIN 类型的示意图:
PHP课程 - 第4课 - 图像处理与GD2库的使用
在前几课中,我们已经学习了如何编写数据库查询,因此这节课我们将少关注“怎么写查询”,而更多地进行实际练习。同时,我们会把查询编写与其他 PHP 功能结合起来,从图像处理开始。在之前的课程中,我们已经实现了文件上传,并且数据库中已有一个 Files 表来存储上传的文件。这次,我们将把图片也上传到同一个表中。但首先,需要在内容创建表单中添加一个上传图片的字段。
PHP课程 - 第3部分 - 创建自己的CMS
使用 CMS 创建网站并不局限于 Drupal、Joomla 或 Wordpress。世界上大多数网站都是基于自写的 CMS 开发的。虽然 PHP 已经有大量成熟的代码,但开发者仍然常常倾向于使用自己的解决方案。让我们来分析一下,为什么值得自己编写一个 CMS。
确实,Drupal 是一个功能强大的系统,拥有大量模块、钩子(hooks)以及用于开发自定义模块的函数。很多人都会编写模块,但我们来看看真正开发 Drupal 核心(CMS 本身)的人有多少?
你可能听说过,Drupal 是上百甚至上千名开发者共同努力的结果。但我们不妨仔细看看,究竟是谁在开发 Drupal。
在 Drupal 下载页面上,有一个区块列出了核心开发者,也就是那些直接参与 CMS 核心代码的人。
drupal.org/node/3060/committers?sort=desc&order=Commits
在该页面上可以看到开发者及其对核心的提交次数。以下是部分列表: