Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan Sambungan MySQLi Dengan Betul Merentasi Kelas PHP Berbeza?

Bagaimana Menggunakan Sambungan MySQLi Dengan Betul Merentasi Kelas PHP Berbeza?

Patricia Arquette
Patricia Arquetteasal
2024-11-30 06:26:10640semak imbas

How to Properly Use MySQLi Connections Across Different PHP Classes?

Menggunakan MySQLi daripada Kelas Lain dalam PHP

Apabila menaik taraf daripada PHP 5.6 kepada 7.0, adalah perlu untuk mengemas kini daripada MySQL kepada MySQLi. Walau bagaimanapun, ini kadangkala boleh membawa kepada isu persediaan.

Masalah:

Selepas menaik taraf kepada PHP 7.0 dan MySQLi, cuba mengakses sambungan pangkalan data menggunakan $this->db ->conn menghasilkan ralat pelayan dalaman 500, walaupun mencipta sambungan pangkalan data secara langsung dalam kelas berfungsi.

Penyelesaian:

Ralat disebabkan oleh beberapa amalan buruk:

  • Melanjutkan kelas daripada Pangkalan Data adalah tidak betul.
  • Kelas Pangkalan Data itu sendiri tidak berguna kerana ia tidak menyediakan apa-apa kefungsian.

Untuk menyelesaikan isu:

  1. Hapuskan kelas Pangkalan Data.
  2. Buat satu contoh $db daripada mysqli biasa.
  3. Paskan contoh ini sebagai parameter pembina kepada mana-mana kelas yang memerlukan pangkalan data sambungan.

Contoh Kod:

// database.php
$db = new mysqli("localhost", "DBUserName", "UserPassword", "SelectedDB");
$db->set_charset('utf8mb4');
// myapi.php
class MyAPI
{
    protected $db;

    public function __construct($db, $request_uri, $postData, $origin)
    {
        $this->db = $db;
    }
    // ... (rest of the class omitted for brevity)
}
// app.php
require 'vendor/autoload.php'; // assuming autoloading is set up

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

Dengan mengikuti garis panduan ini, anda boleh berjaya menggunakan MySQLi daripada kelas lain dalam PHP .

Atas ialah kandungan terperinci Bagaimana Menggunakan Sambungan MySQLi Dengan Betul Merentasi Kelas PHP Berbeza?. 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