sql >> Base de Datos >  >> RDS >> Mysql

Usando MySQLi de otra clase en PHP

Hay varias malas prácticas que te llevaron a este error.

Claramente, extender Usuario desde una Base de datos es un movimiento equivocado. Además, toda la clase de base de datos es bastante inútil ya que no hace nada útil.

Por lo tanto, sugeriría que

  • deshágase de la clase de base de datos inútil.
  • crear un sencillo instancia $db de vainilla mysqli.
  • pasarlo como un parámetro de constructor en cada clase que necesita una conexión a la base de datos

base de datos.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();
    }
}

aplicación.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']);