Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengakses Sambungan Pangkalan Data MySQLi dengan Betul dari Kelas Berbeza dalam PHP?

Bagaimana untuk Mengakses Sambungan Pangkalan Data MySQLi dengan Betul dari Kelas Berbeza dalam PHP?

Barbara Streisand
Lepaskan: 2024-12-08 15:12:11
asal
1017 orang telah melayarinya

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

Menggunakan MySQLi daripada Kelas Lain dalam PHP: Pecahan Terperinci

Dalam pertanyaan ini, pengguna telah menaik taraf MySQL kepada MySQLi selepas beralih daripada PHP 5.6 hingga 7.0. Selepas mengikuti panduan "Menggunakan MySQLi dalam kelas lain," mereka menghadapi ralat pelayan dalaman 500 apabila cuba mengakses sambungan pangkalan data daripada kelas lain.

Untuk memahami ralat, mari kita periksa kod PHP pengguna. Mereka mempunyai tiga kelas: kelas Pangkalan Data untuk mewujudkan sambungan MySQLi, kelas MyAPI tempat mereka cuba mengakses sambungan ini dan fungsi berasingan di mana mereka membuat pertanyaan pangkalan data sebenar.

Analisis Ralat

Masalah timbul daripada beberapa isu asas dalam kod:

  1. Kelas Salah Hierarki: Memanjangkan kelas Pengguna daripada kelas Pangkalan Data ialah pendekatan yang salah.
  2. Kelas Pangkalan Data Berlebihan: Kelas Pangkalan Data pada dasarnya tidak mempunyai tujuan praktikal dan tidak perlu merumitkan kod.

Penyelesaian

Untuk menangani isu ini, langkah berikut disyorkan:

  1. Alih Keluar Pangkalan Data Kelas: Memandangkan ia tidak menawarkan fungsi yang ketara, kelas Pangkalan Data sepatutnya dihapuskan.
  2. Buat Satu Contoh $db: Wujudkan satu tika $db menggunakan MySQLi vanilla.
  3. Lulus $db sebagai Parameter Pembina: Dalam setiap kelas yang memerlukan sambungan pangkalan data, lulus contoh $db sebagai pembina parameter.

Berikut ialah kod PHP yang dipertingkatkan contoh:

pangkalan data.php

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli("localhost", "DBUserName", "UserPassword", "SelectedDB");
$db->set_charset('utf8mb4');
Salin selepas log masuk

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>
Salin selepas log masuk

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']);
Salin selepas log masuk

Dengan pengubahsuaian ini, pengguna seharusnya dapat mewujudkan Sambungan MySQLi dan melaksanakan pertanyaan pangkalan data daripada kelas yang berbeza.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Sambungan Pangkalan Data MySQLi dengan Betul dari Kelas Berbeza dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan