迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

PHP 对 MySQL 数据库进行 CRUD 操作

作者:迹忆客 最近更新:2023/05/09 浏览次数:

在本文中,我们将探讨如何使用 MySQL 数据库通过 PHP 执行 CRUD(创建、读取、更新和删除)操作。 如果大家想亲身体验 PHP 中的数据库连接,本文是一个很好的起点。

如果大家刚刚开始使用 PHP,可能会意识到数据库连接是一项迟早需要熟悉的基本功能。 在大多数情况下,数据库是任何 Web 应用程序的骨干并保存应用程序的数据。 因此,作为 PHP 开发人员,大家需要知道如何处理数据库操作。

在本文中,我们将保持简单并探索如何使用核心 mysqli 函数。 在本系列的后续文章中,我们将探讨处理数据库连接的其他几种方法。

今天,我们将学习 PHP 中数据库连接的基础知识,我们将使用 MySQL 数据库作为我们的数据库后端。 让我们快速浏览一下我们将在本文中介绍的内容:

  • 如何建立数据库连接
  • 如何选择数据库
  • 如何插入和更新记录
  • 如何获取记录
  • 如何删除记录

我假设大家已经安装了 PHP 和 MySQL,并且了解 MySQL 的基础知识。 此外,我们需要确保在您的 PHP 安装中启用了 mysqli 扩展,因为我们将使用它来对 MySQL 数据库进行数据库操作。

如果大家不确定 mysqli 扩展,可以使用 phpinfo() 函数检查它。 在 phpinfo() 输出中,我们可以检查是否有标题为 mysqli 的部分。 如果启用了 mysqli 扩展大家还应该看到 Mysqli Support | enabled

还有一种使用 CLI 界面检查它的简单方法。 我们可以运行以下命令来列出 PHP 设置启用的所有扩展。

$ php -m

它应该打印一个扩展列表,如果它包含 mysqli 关键字,则 mysqli 扩展已启用。

现在我们已经设置好了,让我们开始创建数据库连接。


如何建立数据库连接

在本节中,我们将讨论如何使用 mysqli 扩展建立数据库连接。

有两种方法可以使用 mysqli 扩展,过程式和面向对象的,但我们将在本文中使用过程式方式来使事情简单化。 如果大家对面向对象的语法感到好奇,请在评论部分告诉我你的问题,我很乐意为大家解答。

首先,让我们了解一下 mysqli_connect 函数的语法,该函数用于与 MySQL 后端建立连接。

$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
var_dump($connection_obj);

mysqli_connect 函数有四个参数,并在连接成功时返回连接对象。 让我们来看看每个参数:

  • {MYSQL_HOSTNAME}:这应该替换为 MySQL 服务器的主机名或 IP 地址。 如果您在本地系统中使用 MySQL 服务器,则可以使用 localhost 或 127.0.0.1。
  • {MYSQL_USERNAME}:您的 MySQL 用户的用户名。 用户名默认为 root。
  • {MYSQL_PASSWORD}:您的 MySQL 用户的密码。 默认情况下,密码为空(即无密码)。
  • {MYSQL_DATABASE}:您要连接的数据库。

连接成功后,$connection_obj 包含连接对象。 下图显示了 $connection_obj 对象的各种属性。

php mysql 连接对象

有了这个,我们就可以对提供给 {MYSQL_DATABASE} 参数的数据库运行查询了。

另一方面,如果连接不成功,我们可以调试它,如以下代码片段所示:

$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
var_dump($connection_obj);
// 如果连接不成功:
if (!$connection_obj) {
    echo "Error No: " . mysqli_connect_errno();
    echo "Error Description: " . mysqli_connect_error();
    exit;
}

在下一节中,我们将了解如何使用连接对象选择特定的数据库。


如何选择数据库

在上一节中,我们讨论了如何使用 mysqli_connect 函数建立数据库连接。 在本节中,我们将了解如何在 MySQL 连接成功后选择数据库。

当然,正如我们已经看到的,我们始终可以在 mysqli_connect 函数本身的第四个参数中传递一个数据库。 但是,如果我们想在连接到 MySQL 后更改数据库,还有另一种方法可以执行此操作。 我们可以使用 mysqli_select_db 函数来选择要使用的数据库。

让我们修改上一节中讨论的示例,看看它是如何工作的。

$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}");
var_dump($connection_obj);
// 如果连接不成功:
if (!$connection_obj) {
    echo "Error No: " . mysqli_connect_errno();
    echo "Error Description: " . mysqli_connect_error();
    exit;
}
mysqli_select_db($connection_obj, "{MYSQL_DATABASE}");

如你所见,我们只在 mysqli_connect 函数中传递了三个参数,这应该会为我们提供一个成功的数据库连接。 我们没有在第四个参数中传递数据库,而是使用 mysqli_select_db 函数选择数据库。

mysqli_select_db 函数有两个参数:连接对象和要连接的数据库。


如何创建(插入)和更新记录

在前面的部分中,我们讨论了如何设置 MySQL 连接和选择要使用的数据库。 现在,我们将看看如何对选定的数据库执行不同类型的查询。 首先,让我们看看如何插入和更新记录。

如果我们想按照本文中讨论的示例进行操作,则需要在我们的数据库中创建以下 MySQL 表。 从现在开始,我们将在所有示例中使用该表。

CREATE TABLE `employee` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `phone` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

如何创造记录

为了简单起见,我们将初始化需要在脚本开头插入到员工表中的值。 然而,在大多数情况下,这些将来自使用表单提交的 $_POST 变量中的用户输入。

$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
if (!$connection_obj) {
    echo "Error No: " . mysqli_connect_errno();
    echo "Error Description: " . mysqli_connect_error();
    exit;
}
// initialize variables for the insert query 
$name = 'jiyik';
$email = 'jiyik.onmpw@163.com';
$phone = '12345678900';
// prepare the insert query 
$query = "INSERT INTO employee(`name`,`email`, `phone`) 
VALUES ('". mysqli_real_escape_string($connection_obj, $name) ."','". mysqli_real_escape_string($connection_obj, $email) ."','". mysqli_real_escape_string($connection_obj, $phone) ."')";
// run the insert query 
mysqli_query($connection_obj, $query);
// close the db connection 
mysqli_close($connection_obj);

在上面的脚本中,我们首先初始化了我们将在插入查询中使用的变量。 接下来,我们准备了插入查询并将其分配给 $query 变量。

重要的是要注意,我们使用了 mysqli_real_escape_string 函数来转义我们将在插入查询中使用的字符串值。 当你处理通过 $_POST 变量提交的字符串值时,你必须使用这个函数。 这可确保用户不会将恶意代码注入我们的数据库查询。

最后,我们使用 mysqli_query 函数运行插入查询。 mysqli_query 函数用于对活动数据库运行查询。 最后,我们使用 mysqli_close 函数关闭活动连接。

如何更新记录

在上一节中,我们讨论了如何在 MySQL 表中插入新记录。 在本节中,我们将了解如何更新表中已存在的记录。

我假设 employee 表中已经存在一条记录,并且该记录的 id 为 1。在下面的示例中,我们将更新 id 列中值为 1 的记录。

$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
if (!$connection_obj) {
    echo "Error No: " . mysqli_connect_errno();
    echo "Error Description: " . mysqli_connect_error();
    exit;
}
// initialize variables for the insert query 
$id = 1;
$phone = '12345678901';
// prepare the insert query 
$query = "UPDATE employee SET `phone` = '". mysqli_real_escape_string($connection_obj, $phone) ."' WHERE `id` = '". (int) $id ."'";
// run the insert query 
mysqli_query($connection_obj, $query);
// close the db connection 
mysqli_close($connection_obj);

正如我们在上面的示例中看到的,我们想要更新 employee 表中 id 为 1 的电话列。这与插入查询非常相似,只是我们使用的是 UPDATE 而不是 INSERT


如何检索记录

到目前为止,我们已经讨论了如何在 MySQL 表中插入和更新记录。 在本节中,我们将了解如何从 MySQL 表中检索(获取)记录。

看看下面的例子。

$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
if (!$connection_obj) {
    echo "Error No: " . mysqli_connect_errno();
    echo "Error Description: " . mysqli_connect_error();
    exit;
}
// prepare the select query 
$query = "SELECT * FROM employee";
// execute the select query 
$result = mysqli_query($connection_obj, $query) or die(mysqli_error($connection_obj));
// run the select query 
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
    echo "ID:" . $row['id'] . "<br/>";
    echo "Name:" . $row['name'] . "<br/>";
    echo "Phone:" . $row['phone'] . "<br/>";
    echo "Email:" . $row['email'] . "<br/>";
    echo "<br/>";
}
// close the db connection 
mysqli_close($connection_obj);

为了从数据库中获取记录,我们需要做的第一件事是使用 mysqli_query 函数执行选择查询。 成功执行选择查询后,mysqli_query 函数返回 mysqli 结果对象,这就是我们存储在上面 $result 变量中的内容。

接下来,我们在 while 循环中使用 mysqli_fetch_array 函数迭代结果集。 mysqli_fetch_array 函数一次从 mysqli 结果集中获取一行。

mysqli_fetch_array 函数有两个参数:结果对象和结果类型。 结果类型指示将从 mysqli_fetch_array 函数返回的数组类型。 它可以是数字的、关联的或两者兼而有之。 这是一个可选参数,我们可以传递以下三个值之一:MYSQLI_ASSOCMYSQLI_NUMMYSQLI_BOTHMYSQLI_ASSOC 表示你想通过名称访问列,MYSQLI_NUM 表示你想通过列号访问列。

如果我们在 mysqli_fetch_array 函数的第二个参数中传递 MYSQLI_NUM 值,我们可以以 $row[0]$row[1] 等方式访问列。 在我们的例子中,我们传递了 MYSQLI_BOTH 值,因此我们可以通过两种方式访问列。 如果只想访问关联值,则可以改用 mysqli_fetch_assoc 函数。

在下一节和最后一节中,我们将了解如何从数据库中删除记录。


如何删除记录

在本节中,我们将了解如何从数据库中删除记录。

看看下面的例子。

$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
if (!$connection_obj) {
    echo "Error No: " . mysqli_connect_errno();
    echo "Error Description: " . mysqli_connect_error();
    exit;
}
// initialize variables for the delete query 
$id = 1;
// prepare the insert query 
$query = "DELETE FROM employee WHERE `id` = '". (int) $id ."'";
// run the delete query 
mysqli_query($connection_obj, $query);
// close the db connection 
mysqli_close($connection_obj);

如大家所见,它的工作原理与插入和更新查询几乎相同。 mysqli_query 函数执行 DELETE 查询,最终从 employee 表中删除记录。


总结

在本文中,我们探讨了如何通过 PHP 使用 MySQL 数据库。 本文旨在为初学者提供 PHP 中 MySQL 数据库连接的基本知识。 我们看到了如何从建立数据库连接到执行不同类型的查询。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 Mysqldump 备份 MySQL 中的数据

发布时间:2023/05/09 浏览次数:192 分类:MySQL

本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。

更新 MySQL 表中的主键

发布时间:2023/05/09 浏览次数:61 分类:MySQL

本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。

在 MySQL 中获取命令历史记录

发布时间:2023/05/09 浏览次数:150 分类:MySQL

本文重点介绍了在 Windows 和 Linux 中获取我们已执行的 MySQL 命令历史记录的各种方法。MySQL命令历史

Oracle 的 decode 函数在 MySQL 中的等价物

发布时间:2023/05/09 浏览次数:115 分类:MySQL

本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。

在 Linux 中安装 MySQL 客户端

发布时间:2023/05/09 浏览次数:72 分类:MySQL

在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。

在 MySQL 中转换为十进制

发布时间:2023/05/09 浏览次数:150 分类:MySQL

有时,我们可能需要将一种数据类型转换为另一种数据类型。 下面是我们如何使用带有 DECIMAL(M,D) 的 CAST() 和 CONVERT() 函数在 MySQL 中转换为十进制。

在 MySQL 中获取当前日期和时间

发布时间:2023/05/09 浏览次数:145 分类:MySQL

本篇文章我们将学习 NOW()、CURRENT_TIMESTAMP()(也写为 CURRENT_TIMESTAMP)和 SYSDATE() 来获取 MySQL 中的当前日期和时间。 我们还将看到这三个功能之间的比较。在 MySQL 中获取当前日期和时间

更改 MySQL 服务器中的 max_allowed_packet Size

发布时间:2023/05/09 浏览次数:142 分类:MySQL

本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便