Realizar conexion a Base de Datos Mysql mediante PHP | Conectar PHP con Mysql

Para realizar la conexión a una base de datos MySQL mediante PHP Debemos tener primero una base de datos creada (¿Como crear una base de datos en MySQL?) .

Vamos a proceder a explicar la forma mas optima de conectarse a una base de datos.

Creamos la estructura de folders

Estructura del proyecto

Carpeta Clases : En este folder guardaremos toda la lógica y clases que heredaran de una clase principal llamada conexión.

Carpeta Conexión : Este folder almacenaremos únicamente dos archivos conexion.php el cual contendrá la clase conexión que a su vez se encargara de la conexion con la base de datos. y el archivo config que es donde almacenaremos los datos para conectarnos a dicha base de datos

Archivo config

Como he dicho anteriormente es donde almacenaremos los datos para conectarnos a nuestra base de datos. Almacenaremos dichos datos en formato JSON de la siguiente manera.

¿Por que hacerlo de esta manera?

Por que al momento de cargar o trasladar el sistema que creemos a  otro servidor, tendremos que cambiar todos o algunos de los datos de conexión y así evitaremos que por error modifiquemos código importante para el funcionamiento del sistema.

{
	"conexion":{
			"server" : "direccion-de-tu-servidor",
			"user" : "nombre-de-tu-usuario",
			"password" : "tu-contraseña",
			"database" :"nombre-de-tu-basededatos",
			"port" : "3306"
	}
}  

Archivo conexion.php

Como he dicho anteriormente en este archivo escribiremos la lógica de conexión a la base de datos y lo haremos de la se siguiente manera

<?php
//comenzamos declarando el nombre de la clse
class conexion {
    //creamos los atributos de la clase
    private $server;
    private $user;
    private $password;
    private $database;
    private $port;
    private $conexion;

    //declaramos el contructor 
    function __construct(){
        //obtenemos los datos del archivo config mediente el metodo datosConexion
        $listadatos = $this->datosConexion();
        foreach ($listadatos as $key => $value) {
            $this->server = $value['server'];
            $this->user = $value['user'];
            $this->password = $value['password'];
            $this->database = $value['database'];
            $this->port = $value['port'];
        }
        $this->conexion = new mysqli($this->server,$this->user,$this->password,$this->database,$this->port);
        if($this->conexion->connect_errno){
            echo "algo va mal con la conexion";
            die();
        }

    }
    
    //obtenemos los datos del archivo config
    private function datosConexion(){
        $direccion = dirname(__FILE__);
        $jsondata = file_get_contents($direccion . "/" . "config");
        return json_decode($jsondata, true);
    }


    //convertiremos los datos obtenidos en utf8
    private function convertirUTF8($array){
        array_walk_recursive($array,function(&$item,$key){
            if(!mb_detect_encoding($item,'utf-8',true)){
                $item = utf8_encode($item);
            }
        });
        return $array;
    }

    //esta funcion la invocaremos cuando necesitemos utilizar un select
    public function obtenerDatos($sqlstr){
        $results = $this->conexion->query($sqlstr);
        $resultArray = array();
        foreach ($results as $key) {
            $resultArray[] = $key;
        }
        return $this->convertirUTF8($resultArray);

    }

    //esta funcion la invocaremos cuando necesitemos utilizar insert,delete,update
    public function nonQuery($sqlstr){
        $results = $this->conexion->query($sqlstr);
        return $this->conexion->affected_rows;
    }


    //UNICAMENTE INSERT YA QUE NOS DEVOLVERA EL ULTIMO ID INSERTADO 
    public function nonQueryId($sqlstr){
        $results = $this->conexion->query($sqlstr);
         $filas = $this->conexion->affected_rows;
         if($filas >= 1){
            return $this->conexion->insert_id;
         }else{
             return 0;
         }
    }
     
    //encriptar CONTRASEÑAS

    protected function encriptar($string){
        return md5($string);
    }

}


?> 

¿Como hago una consulta SELECT?

Para realizar una consulta SELECT  desde el archivo index.php ubicado en la raíz del sistema. tendremos que hacer lo siguiente

<?php
//requerimos el archivo conexion
require_once 'clases/conexion/conexion.php';
//instanciamos la clase conexion
$_conexion = new conexion;
//creamos la consulta SELECT
$query= "SELECT * FROM pacientes";
//enviamos la consulta para ser ejecutada
$datosRecibidos = $_conexion->obtenerDatos($query);
//imprimimos el resultado
print_r($datosRecibidos);
?> 

¿Como hago una consulta INSERT,UPDATE,DELETE?

Para realizar una consulta INSERT, DELETE , UPDATE desde el archivo index.php ubicado en la raíz del sistema. tendremos que hacer lo siguiente (El mismo metodo funciona para INSERT,DELETE,UPDATE)

<?php
//requerimos el archivo conexion
require_once 'clases/conexion/conexion.php';
//instanciamos la clase conexion
$_conexion = new conexion;
//creamos la consulta UPDATE,INSERT o DELETE
$query= "INSERT INTO pacientes (id,nombre,edad)values('1','Wilfredo Aleman','31')";
//enviamos la consulta para ser ejecutada
$datosRecibidos = $_conexion->nonQuery($query);
/*imprimimos el resultado es importante reclacar que este metodo retorna las filas afectadas,
En este caso si el INSERT se ha realizado la respuesta sera 1 si no la respuesta sera 0 */
print_r($datosRecibidos);
?> 

¿Te gusta este tipo de contenido ?

Nos vemos en la próximo post de este blog!!

No te olvides de suscribirte a mi canal de YouTube y apuntarte mis cursos de desarrollo web profesional que te ayudarán muchísimo en tu camino como programador o desarrollador web .