迹忆客 专注技术分享

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

PHP 中已弃用的 Mysql_connect 的解决方案

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

本文将教你解决 PHP 中已弃用的 mysql_connect 的解决方案。这些解决方案包括 mysqli_connect(过程和 OOP)和 PHP 数据对象 (PDO)。

使用程序 Mysqli_connect 连接到 MySQL

mysqli_connect 允许你使用过程编程连接到你的 MySQL 数据库。因此,你可以使用以下算法:

在步骤 2 中发生错误之前,此算法工作正常。此类错误可能是不正确的数据库详细信息。

当 PHP 遇到这些不正确的细节时,它会抛出一个 Fatal Error 异常。因此,代码不会进入第 3 步或第 4 步,你将在其中显示错误消息。

为了解决这个问题,我们必须关闭 MySQL 错误报告并禁止警告。通过这样做,当发生错误时,你将阻止用户看到敏感细节,同时,你可以显示自定义错误消息。

话虽如此,以下是修改后的算法:

下面是这个算法的实现:

<?php
    // The following are the defaults for a
    // new MySQL installation. You should replace
    // the $host, $mysql_user, and $mysql_user_password
    // with your details.
    $host = 'localhost';
    $mysql_user = 'root';
    $mysql_user_passowrd = '';

    // Turn off error reports like "Fatal Errors".
    // Such reports can contain too much sensitive
    // information that no one should see. Also,
    // turning off error reports allows us to handle
    // connection error in an if/else statement.
    mysqli_report(MYSQLI_REPORT_OFF);

    // If there is an error in the connection string,
    // PHP will produce a Warning message. For security
    // and private reasons, it's best to suppress the
    // warnings using the '@' sign
    $connect_to_mysql = @mysqli_connect($host, $mysql_user, $mysql_user_passowrd);

    if (!$connect_to_mysql) {
        echo "<b style='color: red;'>Failed to connect to MySQL.</b>";
    } else {
        echo "You've made a successful connection to MySQL.";
    }
?>

成功连接的输出:

You've made a successful connection to MySQL.

连接失败的输出:

<b style='color: red;'>Failed to connect to MySQL.</b>

使用面向对象编程连接到 MySQL

使用 OOP 和 mysqli_connect,你可以使用 new mysqli() 创建数据库连接。与程序技术一样,你必须将连接详细信息传递给 new mysqli()

但是,这些细节中可能存在错误,因此我们将使用 try...catch 块进行错误处理。首先,我们将连接详细信息放在 try 块中,如果发生错误,我们将在 catch 块中捕获它们。

在下文中,与 MySQL 的连接使用 OOP 版本的 mysqli_connect。你还会注意到我们已经抑制了连接字符串中的错误。

<?php
    // The following are the defaults for a
    // new MySQL installation. You should replace
    // the $host, $mysql_user, and $mysql_user_password
    // with your details.
    $host = 'localhost';
    $mysql_user = 'root';
    $mysql_user_passowrd = '';

    try {
        // Connect to the database using the OOP style
        // of mysqli.
        $connection_string = @new mysqli($host, $mysql_user, $mysql_user_passowrd);
        echo "You've made a successful connection to MySQL.";
    } catch (Exception $e) {
        // If an error occurs, access the getMessage()
        // method of the $e object. This gives information
        // on why the error occurred.
        echo "<b style='color: red;'>Failed to connect to MySQL :</b> " . $e->getMessage();
    }
?>

成功连接的输出:

You've made a successful connection to MySQL.

连接失败的输出:

<b style='color: red;'>Failed to connect to MySQL :</b> Access denied for user ''@'localhost' (using password: NO)

使用 PDO 连接到 MySQL

你可以使用 PDO 连接到 MySQL,并且你应该使用 try...catch 块捕获错误。后者的工作方式与你在 OOP 部分中学习的方式相同。

此外,当错误发生时,你的用户不会看到敏感的错误消息。现在,下面是连接 MySQL 的 PDO 版本:

<?php
    // The following are the defaults for a
    // new MySQL installation. You should replace
    // the $host, $mysql_user, and $mysql_user_password
    // with your details.
    $host = 'localhost';
    $mysql_user = 'root';
    $mysql_user_passowrd = '';

    try {
        // Connect to MySQL using PDO and set PDO
        // error mode to exception.
        $connection_string = @new PDO("mysql:host=$host", $mysql_user, $mysql_user_passowrd);
        $connection_string->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "You've made a successful connection to MySQL.";
    } catch (PDOException $e) {
        // If an error occurs, access the getMessage()
        // method of the $e object. This gives information
        // on why the error occurred.
        echo "<b style='color: red;'>Failed to connect to MySQL:</b> " . $e->getMessage();
    }
?>

连接成功的输出:

You've made a successful connection to MySQL.

连接失败的输出:

Failed to connect to MySQL: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)

转载请发邮件至 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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便