首页  >  文章  >  后端开发  >  为什么在 PHP 中从单独的类访问 MySQLi 连接时会收到'500 内部服务器错误”?

为什么在 PHP 中从单独的类访问 MySQLi 连接时会收到'500 内部服务器错误”?

DDD
DDD原创
2024-10-26 05:48:02423浏览

Why Am I Getting a

如何从 PHP 中的单独类访问 MySQLi

尝试从单独的类建立数据库连接时遇到错误在 PHP 中使用 MySQLi。当您尝试访问连接对象时,错误为“Internal Server Error 500”,这表明您的代码或配置存在问题。

要解决此问题,让我们分析代码并确定关键点:

数据库类:

数据库类包含连接数据库的必要信息,例如服务器名称、用户名、密码和数据库名称。

API 类:

在 API 类中,您可以使用 new Database() 初始化 $db 属性。这将建立一个新的数据库连接对象,该对象与数据库类的 __construct 方法中创建的连接不同。

函数调用:

然后您尝试使用 $this->db->conn 对象执行查询,该对象在 MyAPI 类中未定义。这是因为 $conn 属性仅在 Database 类中定义。

解决方案:

要访问 MyAPI 类中的数据库连接对象,需要通过创建数据库的新实例时将其作为构造函数参数。

以下是更正后的代码:

Database.php:

<code class="php">class Database
{
    private $conn;

    public function __construct()
    {
        $this->conn = new mysqli(...connection details...);
    }

    public function getConn()
    {
        return $this->conn;
    }
}</code>

MyAPI.php:

<code class="php">class MyAPI
{
    private $db;

    public function __construct($db)
    {
        $this->db = $db;
    }

    public function getUser($id)
    {
        $sql = ...query...;
        $result = mysqli_query($this->db->getConn(), $sql);
        return mysqli_fetch_assoc($result);
    }
}</code>

app.php:

<code class="php">$db = new Database();
$api = new MyAPI($db);
$user = $api->getUser($_POST['id']);</code>

此方法确保可以在 MyAPI 中访问数据库连接对象类,允许您成功执行查询并检索数据。

以上是为什么在 PHP 中从单独的类访问 MySQLi 连接时会收到'500 内部服务器错误”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn