sql >> Databasteknik >  >> RDS >> Mysql

Använder MySQLi från en annan klass i PHP

Det finns flera dåliga metoder som ledde dig till det här felet.

Det är uppenbart att utvidgning av användare från en databas är ett felaktigt drag. Dessutom är hela databasklassen ganska värdelös eftersom den inte gör någonting användbart.

Därför skulle jag föreslå att

  • bli av med den värdelösa databasklassen.
  • skapa en singel $db-instans från vanilla mysqli.
  • lägg in den som en konstruktorparameter till varje klass som behöver en databasanslutning

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. Hur använder man tabellvariabel i en dynamisk SQL-sats?

  2. Hur testar jag i WiX om det finns en registernyckel (inte värde) för Oracle ODP.Net

  3. Hur man spelar PLAY_SOUND i Oracle Forms

  4. Hur man ansluter till SQL Server Default Instance och SQL Server Named Instances - SQL Server / TSQL självstudie del 2