ホームページ > データベース > mysql チュートリアル > PHP の異なるクラスから MySQLi データベース接続に適切にアクセスするにはどうすればよいですか?

PHP の異なるクラスから MySQLi データベース接続に適切にアクセスするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-08 15:12:11
オリジナル
1022 人が閲覧しました

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 コードを調べてみましょう。これらには 3 つのクラスがあります。MySQLi 接続を確立するための Database クラス、この接続へのアクセスを試みる MyAPI クラス、および実際のデータベース クエリを作成する別の関数です。

エラー分析

この問題は、コード:

  1. 間違ったクラス階層: Database クラスから User クラスを拡張することは間違ったアプローチです。
  2. 冗長データベース クラス: Database クラスは基本的に実用的な目的を持たず、データベースを不必要に複雑にします。 code.

解決策

これらの問題に対処するには、次の手順をお勧めします。

  1. データベースを削除するClass: 重要な機能を提供しないため、Database クラスは次のようにする必要があります。
  2. 単一の $db インスタンスの作成: バニラ 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート