• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

PHP MySQL 数据库中的 CRUD 操作入门

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

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

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

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

  • 如何建立数据库连接

  • 如何选择数据库

  • 如何插入和更新记录

  • 如何获取记录

  • 如何删除记录

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

如果您不确定 mysqli 扩展名,可以使用该phpinfo()功能进行检查。在phpinfo()输出中,您可以检查是否有标题为mysqli的部分。您还应该看到Mysqli 支持 | 如果启用了 mysqli 扩展,则启用标头。

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

$php -m

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

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

如何设置数据库连接

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

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

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

<?php
$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 数据库中的 CRUD 操作入门  第1张

连接对象

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

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

<?php
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}"); 
var_dump($connection_obj);
// If the connection is not successful:
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功能选择要使用的数据库。

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

<?php
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}");
var_dump($connection_obj); 
// If the connection is not successful:
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;

使用phpMyAdmin中的 SQL 选项卡

PHP MySQL 数据库中的 CRUD 操作入门  第2张

在数据库中创建表

在您的 MySQL 数据库中执行上述命令应创建employee如下图所示的表。

PHP MySQL 数据库中的 CRUD 操作入门  第3张

员工表

如何创建记录

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

<?php
$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 = 'John Smith';
$email = 'john.smith@yahoo.com';
$phone = '541-754-1234';
 
// 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函数关闭活动连接。

结果如下:

PHP MySQL 数据库中的 CRUD 操作入门  第4张

新行添加到员工表

如何更新记录

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

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

<?php
$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 = '333-555-4444';
 
// 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);
?>

如您在上面的示例中所见,我们要更新表中为 1 的phone列。这与插入查询非常相似,只是我们使用的是.employeeidUPDATEINSERT

结果如下:

PHP MySQL 数据库中的 CRUD 操作入门  第5张

现有行已修改

如何检索记录

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

看看下面的例子。

<?php
$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对象,这就是我们在$result上面的变量中存储的内容。

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

该mysqli_fetch_array函数有两个参数:结果对象和结果类型。结果类型指示将从mysqli_fetch_array函数返回的数组类型。它可以是数字的、关联的或两者兼而有之。这是一个可选参数,您可以传递以下三个值之一:MYSQLI_ASSOC、MYSQLI_NUM或MYSQLI_BOTH。MYSQLI_ASSOC表示您要按列名访问列,并MYSQLI_NUM表示您要按列号访问列。

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

结果将是这样的:

ID:1
Name:John Smith
Phone:333-555-4444
Email:john.smith@yahoo . com

在下一节也是最后一节中,我们将看到如何从数据库中删除记录。

如何删除记录

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

看看下面的例子。

<?php
$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 数据库中的 CRUD 操作入门  第6张

第一行删除成功

结论

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


文章目录
  • 如何设置数据库连接
  • 如何选择数据库
  • 如何创建(插入)和更新记录
    • 如何创建记录
    • 如何更新记录
  • 如何检索记录
  • 如何删除记录
  • 结论
  • 发表评论