Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan MySQLi dari kelas lain di PHP

Ada beberapa praktik buruk yang menyebabkan Anda melakukan kesalahan ini.

Jelas, memperluas Pengguna dari Database adalah langkah yang salah. Juga, seluruh kelas Database agak tidak berguna karena tidak melakukan sesuatu yang berguna.

Oleh karena itu saya akan menyarankan untuk

  • singkirkan kelas Database yang tidak berguna.
  • buat tunggal $db instance dari vanilla mysqli.
  • teruskan sebagai parameter konstruktor ke setiap kelas yang membutuhkan koneksi database

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 id=?";
        $stmt = $this->db->prepate($sql);
        $stmt->bind_param("s", $id);
        $stmt->execute();
        $result = $stmt->get_result();
        return $result->fetch_assoc();
    }
}

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']);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bbPress:Cara menemukan pemetaan lampiran ke masing-masing posting

  2. Java:Masukkan beberapa baris ke MySQL dengan PreparedStatement

  3. Bagaimana cara mengubah kueri MSSQL CTE ke MySQL?

  4. prosedur tersimpan mysql yang menyebut dirinya secara rekursif

  5. Konfigurasi Replikasi Database Master-Master MySQL