53 Conexión a una BBDD MySQL con PHP

En este capítulo vamos a ver como hacer una conexión a una base de datos. Poder hacer una conexión a la base de datos, lo primero ue tenemos que tener es la base de datos. Vamos a ingresar a PHPMyAdmin y crear una nueva base de datos a la que vamos a llamar mvc.

Una vez tenemos creada nuestra base de datos, para poder hacer pruebas y poder conectarnos a una tabla vamos a crear una tabla para poder agregar contactos, a dicha tabla la vamos a llamar contacts. Los campos que vamos a crear son:

  • id
  • name
  • email
  • phone

Lo que nos interesa es conectarnos a la tabla de la base de datos pero desde PHP. Cuando explicamos que es el patrón Modelo Vista Controlador especificamos que toda conexión con una base de datos deberíamos hacerlo desde los Modelos, por lo tanto vamos a crear un modelo y desde ese modelo conectarnos a la tabla.

Como nos queremos conectar a la tabla contacts, vamos a especificar un modelo denominado Contact.php dentro del cual vamos a crear una clase denominada Contact.

Contact.php

<?php

namespace App\Models;

use mysqli;

class Contact {

  protected $db_host = DB_HOST;
  protected $db_user = DB_USER;
  protected $db_pass = DB_PASS;
  protected $db_name = DB_NAME;

  protected $connection;

  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);
    }
  }
}

 

HomeController.php

<?php

namespace App\Controllers;

use App\Models\Contact;

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

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

 

Por otro lado vamos a crear una nueva carpeta conf donde vamos a guardar todas las constantes de configuración, como el acceso a la base de datos, y un archivo database.php que incluirá la siguiente información.

database.php

<?php

define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'mvc');

 

Hasta aquí el esquema de nuestra app es el siguiente:

  • app
    • Controllers
      • Controller
      • HomeController
    • Models
      • Contact
  • config
    • database.php
  • lib
    • Route.php
  • public
    • css
    • img
    • js
    • .htaccess
    • index.php
  • resources
    • css
    • js
    • views
      • home.php
  • routes
    • web.php
  • .htaccess
  • autoload.php