您是否想学习如何将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数据库的裸机连接。 这是一项很重要的技能,但是如果您想节省下一个项目的时间,则可能需要升级到专业的数据库脚本。 这样可以节省时间,并使您的工作更轻松。
探索在CodeCanyon上创建的最佳和最有用的PHP数据库脚本 。 通过低成本的一次性付款,您可以购买这些高质量的WordPress主题,并为您和您的访客改善网站体验。
创建一个MySQL连接
在本节中,我将向您展示如何从PHP脚本连接到MySQL服务器并创建连接对象。 稍后,该连接对象将用于运行查询,获取输出以及处理数据库记录。 如前所述,本文将使用PHP MySQLi扩展。
MySQLi扩展提供了两种不同的方法来执行数据库操作。 您可以使用面向对象的方法或过程的方法,但是由于本教程是针对初学者的,因此我将坚持使用过程的方法。 如果您有兴趣查看一些面向对象的代码段,可以在下面的评论部分中对我进行ping操作,我们将很乐意为您提供这些代码段。
首先,继续在文档根目录下创建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一起安装在同一系统上,则应使用localhost
或127.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_connect
函数建立数据库连接。 之后,我们准备了插入查询,稍后将执行它。 重要的是要注意,我们已经使用mysqli_real_escape_string
函数来转义将在插入查询中使用的字符串值。 具体来说,在处理通过$_POST
变量提交的值时,必须使用此函数,以避免SQL注入。
最后,我们使用了mysqli_query
函数,该函数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数据库。 从建立数据库连接到执行不同类型的查询,我们几乎讨论了数据库连接的每个方面。
尽管我试图使事情尽可能简单,但是如果您仍然发现任何令人困惑的地方或想详细了解任何特定的事情,请随时使用下面的提要发布查询。
探索在CodeCanyon上创建的数千个最好,最有用的PHP脚本 。 通过低成本的一次性付款,您可以购买这些高质量的WordPress主题,并为您和您的访客改善网站体验。
翻译自: https://code.tutsplus.com/tutorials/how-to-connect-php-to-mysql--cms-34408