首页 > 数据库 > mysql教程 > 如何从 PHP 中的不同类正确访问 MySQLi 数据库连接?

如何从 PHP 中的不同类正确访问 MySQLi 数据库连接?

Barbara Streisand
发布: 2024-12-08 15:12:11
原创
1017 人浏览过

How to Properly Access a MySQLi Database Connection from Different Classes in PHP?

在 PHP 中使用另一个类中的 MySQLi:详细分解

在此查询中,用户在从 PHP 转换后已将 MySQL 升级到 MySQLi 5.6 至 7.0。在遵循“在其他类中使用 MySQLi”指南后,他们在尝试从不同类访问数据库连接时遇到内部服务器错误 500。

要了解该错误,让我们检查用户的 PHP 代码。它们具有三个类:用于建立 MySQLi 连接的数据库类、尝试访问此连接的 MyAPI 类以及进行实际数据库查询的单独函数。

错误分析

问题是由代码中的几个基本问​​题引起的:

  1. 不正确的类层次结构:从数据库类扩展用户类是一种不正确的方法。
  2. 冗余数据库类:数据库类本质上没有任何实际用途,并且不必要地使代码。

解决方案

要解决这些问题,建议执行以下步骤:

  1. 删除数据库Class:由于它没有提供重要的功能,因此 Database 类应该是
  2. 创建单个 $db 实例:使用 vanilla MySQLi 建立 $db 的单个实例。
  3. 将 $db 作为构造函数参数传递:在每个需要数据库连接的类中,将 $db 实例作为构造函数传递参数。

这是改进的 PHP 代码例如:

database.php

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli("localhost", "DBUserName", "UserPassword", "SelectedDB");
$db->set_charset('utf8mb4');
登录后复制

myapi.php

<?php
class MyAPI
{
    protected $db;

    public function __construct($db, $request_uri, $postData, $origin)
    {
        $this->db = $db;
    }

    public function getUser($id)
    {
        $sql = "SELECT * FROM users where>
登录后复制

app.php

<?php
# require_once 'Database.php';
# require_once 'myapi.php';
require 'vendor/autoload.php'; // autoloading is a must

$api = new MyAPI($db, $request_uri, $postData, $origin);
$user = $api->getUser($_POST['id']);
登录后复制

有了这些修改后,用户应该能够建立正确的 MySQLi 连接并执行来自不同类的数据库查询。

以上是如何从 PHP 中的不同类正确访问 MySQLi 数据库连接?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板