54. Hacer consultas SQL a una BBDD MySQL con PHP

En este capítulo vamos a ver como hacer consultas SQL a nuestra base de datos, para lo cual vamos a trabajar con el archivo Contact.php dentro de la carpeta Models.

Models/Contact.php

<?php

namespace App\Models;

use mysqli;

class Contact {

  // Propiedades que recogen los datos de acceso a la BBDD
  protected $db_host = DB_HOST;
  protected $db_user = DB_USER;
  protected $db_pass = DB_PASS;
  protected $db_name = DB_NAME;

  // Propiedad que recoge la conexión a la base de datos
  protected $connection;

  // Propiedad que recoge la consulta a la BBDD
  protected $query;

  public function __construct(){
    $this->connection();
  }

  // Método encargado de realizar la conexión
  public function connection(){
    // Conexión con mysqli
    $this->connection =  new mysqli($this->db_host, $this->db_user, $this->db_pass, $this->db_name);

    if($this->connection->connect_error)
    {
      die('Error de conexión: ' . $this->connection->connect_error);
    }
  }

  // Método que hace la consulta a la base de datos
  public function query($sql){
    $this->query = $this->connection->query($sql);

    return $this;
  }

  // Método que recupera el primer registro de la consulta a la base de datos
  public function first(){
    return $this->query->fetch_assoc();
  }

  // Método que recupera todos los registros de la consulta a la base de datos
  public function get(){
    return $this->query->fetch_all(MYSQLI_ASSOC);
  }
}

 

Hemos agregado un nuevo método denominado query() el cual va a hacer la consulta a la base de datos.

Ahora vamos a trabajar en nuestro archivo HomeController.php.

Controllers/HomeController.php

<?php

namespace App\Controllers;

use App\Models\Contact;

class HomeController extends Controller
{
  public function index()
  {
    $contactModel = new Contact();

    // Le decimos al modelo que haga la siguiente consulta
    return $contactModel->query("SELECT * FROM contacts")->get();

    // Método que se encarga de incluir toda la lógica necesaria para mostrar contenido
    return $this->view('home', [
      'title' => 'Home',
      'description' => 'Esta es la página Home'
    ]);
  }
}