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

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

Mary-Kate Olsen
リリース: 2024-12-18 02:29:09
オリジナル
493 人が閲覧しました

How Can I Properly Access a MySQLi Database Connection from Different PHP Classes?

PHP の他のクラスから MySQLi 接続にアクセスする

PHP 5.6 から 7.0 にアップグレードする場合は、MySQL から MySQLi に移行することが不可欠です。この移行により、特に別のクラスから MySQLi 接続にアクセスしようとする場合に課題が生じる可能性があります。この質問は、データベース クラスを使用して API クラスからデータベースに接続しようとすると内部サーバー エラーが発生するという状況の 1 つを強調しています。

問題の根本は、適切なプログラミング慣行に従うことにあります。データベース クラスからユーザーを拡張することは誤りであり、データベース クラス自体には重要な機能が欠けています。このエラーを解決し、全体的な設計を改善するには、次の手順を検討してください:

  1. 冗長な Database クラスを削除します。これには特定の目的はなく、不必要な複雑さが生じます。
  2. バニラ MySQLi から単一の $db インスタンスを作成します。このインスタンスは、すべてのデータベース操作の中央接続ポイントとして機能します。
  3. データベース接続を必要とするすべてのクラスに、$db インスタンスをコンストラクター パラメーターとして渡します。これらの手順に従うことで、よりクリーンで保守しやすいコードベースを確立できます。更新されたコード構造は次のようになります:
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 'vendor/autoload.php'; // autoloading is recommended

$api = new MyAPI($db, $request_uri, $postData, $origin);
$user = $api->getUser($_POST['id']);
ログイン後にコピー

以上が異なる PHP クラスから MySQLi データベース接続に適切にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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