Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Saya Mendapat \"500 Ralat Pelayan Dalaman\" Apabila Mengakses Sambungan MySQLi daripada Kelas Berasingan dalam PHP?

Mengapa Saya Mendapat \"500 Ralat Pelayan Dalaman\" Apabila Mengakses Sambungan MySQLi daripada Kelas Berasingan dalam PHP?

DDD
DDDasal
2024-10-26 05:48:02347semak imbas

Why Am I Getting a

Cara Mengakses MySQLi daripada Kelas Berasingan dalam PHP

Anda menghadapi ralat semasa cuba mewujudkan sambungan pangkalan data daripada kelas berasingan dalam PHP menggunakan MySQLi. Ralatnya ialah "Ralat Pelayan Dalaman 500" apabila anda cuba mengakses objek sambungan, menunjukkan masalah dengan kod atau konfigurasi anda.

Untuk menyelesaikan isu ini, mari analisa kod dan kenal pasti perkara utama:

Kelas Pangkalan Data:

Kelas pangkalan data mengandungi maklumat yang diperlukan untuk menyambung ke pangkalan data, seperti nama pelayan, nama pengguna, kata laluan dan nama pangkalan data.

Kelas API:

Dalam kelas API, anda memulakan sifat $db dengan Pangkalan Data baharu(). Ini mewujudkan objek sambungan pangkalan data baharu, yang berbeza daripada sambungan yang dibuat dalam kaedah __konstruk kelas pangkalan data.

Panggilan Fungsi:

Anda kemudian cuba untuk laksanakan pertanyaan menggunakan objek $this->db->conn, yang tidak ditentukan dalam kelas MyAPI. Ini kerana sifat $conn hanya ditakrifkan dalam kelas Pangkalan Data.

Penyelesaian:

Untuk mengakses objek sambungan pangkalan data dalam kelas MyAPI, anda perlu lulus ia sebagai hujah pembina semasa mencipta tika Pangkalan Data baharu.

Berikut ialah kod yang diperbetulkan:

Pangkalan Data.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>

Pendekatan ini memastikan objek sambungan pangkalan data boleh diakses dalam MyAPI kelas, membolehkan anda melaksanakan pertanyaan dan mendapatkan data dengan jayanya.

Atas ialah kandungan terperinci Mengapa Saya Mendapat \"500 Ralat Pelayan Dalaman\" Apabila Mengakses Sambungan MySQLi daripada Kelas Berasingan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn