如何将 PHP 连接到 MySQL

作者 : 慕源网 本文共6384个字,预计阅读时间需要16分钟 发布时间: 2021-09-11 共232人阅读

如何将 PHP 连接到 MySQL

您想学习如何将 PHP 连接到 MySQL 并执行不同类型的数据库操作吗?在本文中,我们将这样做——我们将讨论 PHP 中的 MySQL 数据库连接。

PHP 提供了将 PHP 连接到 MySQL 数据库服务器的不同方式。在 PHP 5.5 之前,最流行的方式之一是使用 MySQL 扩展——它提供了一种连接 MySQL 服务器的“程序化”方式。但是,从 PHP 5.5 开始不推荐使用此扩展,因此我们不打算讨论它。

目前,您的两个选择是 PDO 和 MySQLi。

PDO(PHP 数据对象)扩展支持不同类型的底层数据库服务器以及 MySQL 服务器。因此,如果您决定在未来的任何时候更换底层数据库服务器,它是可移植的。

另一方面,MySQLi 扩展特定于 MySQL 服务器并提供更好的速度和性能。MySQLi 扩展一开始也可能更容易理解,因为它允许您直接编写 SQL 查询。如果您以前使用过 SQL 数据库,这将非常熟悉。但是,PDO 扩展创建了从 SQL 数据库到 PHP 代码的强大映射,让您无需了解 SQL 或数据库的详细信息即可执行大量数据库操作。从长远来看,对于较大的项目,这可以节省大量的编码和调试工作。

我们将在本文中介绍以下主题:

  • 创建 MySQL 连接
  • 插入、更新和删除记录
  • 检索记录

CodeCanyon 上最好的 PHP 数据库脚本

在这篇文章中,我将向您展示如何从 PHP 建立到 MySQL 数据库的裸机连接。这是一项重要的技能,但如果您想节省下一个项目的时间,您可能需要升级到专业的数据库脚本。这将节省时间并使您的工作更轻松。

创建 MySQL 连接

在本节中,我将向您展示如何从 PHP 脚本连接到 MySQL 服务器并创建连接对象。稍后,此连接对象将用于运行查询、获取输出和操作数据库记录。正如我们之前所讨论的,我们将在本文中使用 PHP MySQLi 扩展。

MySQLi 扩展提供了两种不同的方式来执行数据库操作。您可以使用面向对象的方式或过程方式来使用它,但是由于本教程是针对初学者的,我将坚持使用过程方式。如果您有兴趣查看一些面向对象的片段,可以在下面的评论部分与我联系,我很乐意提供它们。

首先,继续在您的文档根目录下创建db_connect.php文件,其中包含以下内容。

<?php
$mysqli_link = mysqli_connect("{HOST_NAME}", "{DATABASE_USERNAME}", "{DATABASE_PASSWORD}", "{DATABASE_NAME}");
 
if (mysqli_connect_errno()) 
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

请注意,我在mysqli_connect函数中使用了占位符——您必须将它们替换为实际值。

让我们通过每个占位符来看看它代表什么。

  • {HOST_NAME}:这代表您的 MySQL 服务器的主机名或 IP 地址。如果您已将 MySQL 服务器与 PHP 安装在同一系统上,则应使用localhost127.0.0.1。另一方面,如果您使用的是外部托管的 MySQL 服务器,则可以使用相应的主机名或 IP 地址。
  • {DATABASE_USERNAME}:这代表您的 MySQL 用户的用户名。基本上,这是您用来连接到 MySQL 服务器的用户名。
  • {DATABASE_PASSWORD}:这代表您的 MySQL 用户的密码。同样,这是您用来连接到 MySQL 服务器的密码以及 MySQL 用户名。
  • {DATABASE_NAME}:这是您要连接的 MySQL 数据库的名称。创建连接后,您将查询此数据库以进行进一步操作。

继续用实际值替换这些占位符。就我而言,我已经在本地安装了 MySQL 服务器,并且我有一个 MySQL 用户,其中tutsplus-demo-user作为 MySQL 用户名,tutsplus-demo-password作为 MySQL 密码。有了这个,上面的例子看起来像这样:

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
 
if (mysqli_connect_errno()) 
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

如果你运行这个例子,它应该创建一个数据库连接链接并将它分配给$mysqli_link变量,我们稍后将使用它来执行不同类型的数据库操作。

另一方面,如果建立连接有任何问题,该  mysqli_connect_errno函数将返回一个错误代码,该mysqli_connect_error函数将显示实际错误。在上面的示例中,我们将其用于调试目的。

现在,我们已成功连接到 MySQL 服务器,从下一节开始,我们将看到如何使用它来执行不同类型的查询。

如何插入记录

在上一节中,我们讨论了如何使用该mysqli_connect函数建立与 MySQL 服务器的数据库连接。在本节中,我们将继续讨论如何使用连接对象来执行INSERT查询。

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

CREATE TABLE `students` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

继续使用 phpMyAdmin 软件或命令行工具创建上述 MySQL 表。

接下来,让我们创建db_insert.php包含以下内容的文件。请不要忘记将连接参数替换为您自己的。

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
 
if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}
 
$insert_query = "INSERT INTO students(`first_name`,`last_name`,`email`)
VALUES ('". mysqli_real_escape_string($mysqli_link, 'John') ."','". mysqli_real_escape_string($mysqli_link, 'Wood') ."','". mysqli_real_escape_string($mysqli_link, 'john.wood@tutsplus.com') ."')";
  
// run the insert query
If (mysqli_query($mysqli_link, $insert_query)) {
    echo 'Record inserted successfully.';
}
  
// close the db connection
mysqli_close($mysqli_link);
?>

首先,我们使用mysqli_connect前面讨论过的函数建立数据库连接。之后,我们准备了稍后要执行的插入查询。请务必注意,我们已使用该mysqli_real_escape_string函数来转义将在插入查询中使用的字符串值。具体来说,在处理通过$_POST变量提交的值时必须使用此函数以避免 SQL 注入。

最后,我们使用了mysqli_query带有两个参数的函数。第一个参数是将执行查询的活动连接链接。第二个参数是我们要执行的 MySQL 查询。如果查询执行成功,该mysqli_query函数将返回TRUE

最后,我们使用了该mysqli_close函数来关闭活动的数据库连接。完成数据库操作后关闭数据库连接是一个很好的做法。

继续运行脚本,应该会在students表中插入一条记录!

如何更新记录

从 PHP 脚本更新数据库中的记录与插入操作非常相似;唯一的区别是查询将是更新查询而不是插入查询。

让我们修改上面的示例并更新first_name字段,如下例所示。

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
 
if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}
 
$update_query = "UPDATE students SET `first_name` = '". mysqli_real_escape_string($mysqli_link,'Johnny') ."' WHERE `email` = 'john.wood@tutsplus.com'";
  
// run the update query
If (mysqli_query($mysqli_link, $update_query)) {
    echo 'Record updated successfully.';
}
  
// close the db connection
mysqli_close($mysqli_link);
?>

继续运行脚本,这应该会更新students表中的记录。

如何选择记录

在前面的部分中,我们讨论了如何从 PHP 脚本插入和更新数据库中的记录。在本节中,我们将探讨如何使用不同类型的 MySQLi 函数从数据库中获取记录。

首先,您需要使用该mysqli_query函数来执行选择查询。成功执行选择查询后,该mysqli_query函数返回 mysqli 结果对象,我们可以使用它来迭代选择查询返回的记录。在从 MySQLi 结果对象中获取和迭代记录时,有不同的可用函数。

  • mysqli_fetch_all:它允许您一次获取所有结果行。您还可以指定您希望结果是关联数组、数值数组还是两者兼而有之。
  • mysqli_fetch_array:它允许您一次检索一行。因此,您必须使用 while 循环来遍历所有记录。同样,您可以指定将结果行作为关联数组、数值数组还是两者兼而有之。
  • mysqli_fetch_assoc:它一次获取一个结果行作为关联数组。
  • mysqli_fetch_object:它一次获取一个结果行作为一个对象。

让我们看一下下面的例子来理解它是如何工作的:

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
 
if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}
 
$select_query = "SELECT * FROM students LIMIT 10";
$result = mysqli_query($mysqli_link, $select_query);
 
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    echo "First Name:" . $row['first_name'] . "<br/>";
    echo "Last Name:" . $row['last_name'] . "<br/>";
    echo "Email:" . $row['email'] . "<br/>";
    echo "<br/>";
}
 
// close the db connection
mysqli_close($mysqli_link);
?>

如您所见,我们使用了mysqli_fetch_array带有MYSQLI_ASSOC选项的函数作为第二个参数。因此,它将结果行作为关联数组返回。如果您使用该MYSQLI_NUM选项,您将像$row[0],$row[1]$row[2]在上面的示例中那样访问它。

另一方面,如果您使用mysqli_fetch_object上述示例中的函数,则可以访问以下代码段中所示的值。为简洁起见,我将只包含 while 循环片段。

…
…
while ($row = mysqli_fetch_object($result)) {
    echo "First Name:" . $row->first_name . "<br/>";
    echo "Last Name:" . $row->last_name . "<br/>";
    echo "Email:" . $row->email . "<br/>";
    echo "<br/>";
}
...
...

因此,通过这种方式,您可以从 MySQLi 数据库中获取和显示记录。

如何删除记录

在本节中,我们将看到如何从 PHP 脚本运行删除查询。从数据库中删除记录是一个非常简单的操作,因为您只需要准备删除查询并使用该mysqli_query函数运行它。

让我们通过下面的例子来看看它是如何工作的。

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");
 
if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}
 
$delete_query = "DELETE FROM students WHERE `email` = 'john.wood@tutsplus.com'";
  
// run the update query
If (mysqli_query($mysqli_link, $delete_query)) {
    echo 'Record deleted successfully.';
}
  
// close the db connection
mysqli_close($mysqli_link);
?>

如您所见,一切都与我们在插入和更新示例中已经看到的一样,只是在这种情况下查询是删除查询。

这就是您可以从 PHP 脚本执行不同类型的数据库操作的方式。

至此,我们已经到了本教程的结尾。我们今天讨论的内容应该可以帮助您加强数据库连接概念,特别是如何将 PHP 连接到 MySQL 并执行不同类型的操作。

结论

在本文中,我们讨论了如何使用 MySQLi 扩展将 PHP 连接到 MySQL 数据库。从建立数据库连接到执行不同类型的查询,我们几乎讨论了数据库连接的每个方面。

尽管我已尽量让事情变得简单,但如果您仍然发现任何令人困惑的事情或想详细了解任何具体事情,请随时使用下面的提要发布您的查询。


慕源网 » 如何将 PHP 连接到 MySQL

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录