Conectar a una Base de datos mySql en PHP.

Como Conectar a una Base de datos mySql en PHP.

En este artículo voy a explicar como conectar a una base de datos mySql en PHP utilizando un enfoque orientado a objetos.

Como mis lectores sabrán, a mi me gusta ir a los fierros (como decimos los argentinos), es decir escribamos código y analicemoslo.

El siguiente es un ejemplo sencillo que consistirá en recuperar los datos de un cliente. Contaremos con 3 archivos

  1. connectDB.php
  2. busquedaAjax.php
  3. busquedaAjaxCliente.html

Por qué Ajax? Simple, vamos a usar Ajax para no tener que recargar la página al recuperar los datos del cliente.

connectDB.php

<?php
$connectionDB= new mysqli('localhost', 'root', '', 'sisfact');

if ($connectionDB->connect_errno) {
 printf("Error de conexión: %s\n", $connectionDB->connect_errno);
 exit();
}
?>

Lo primero que haremos es crear un script que será el encargado de conectarse a la BD. Para ello, la primera instrucción que  observamos es $connectionDB= new mysqli(‘localhost’, ‘root’, ”, ‘sisfact’);

Lo que hace esto es crear un objeto de tipo mysqli. Esta clase se utiliza para obtener una conexión entre PHP y la BD mySql y nos proveerá la funcionalidad que necesitemos para tratar los datos. Los parámetros que recibe son los siguientes:

  1. El host al que nos queremos conectar. En el ejemplo localhost
  2. El usuario y la contraseña. En el ejemplo root y (vacio). A fines del ejemplo no importa no tener contraseña, pero cualquier sistema minimamente seguro deberá tener contraseñas para sus usuarios
  3. La instancia de BD a la que nos queremos conectar. En el ejemplo sisfact

Lo siguiente a realizar es controlar si tuvimos éxito en nuestro intento de conexión. Para esto preguntamos
if ($connectionDB->connect_errno)
$connectionDB->connect_errno nos devuelve el último error que hubo al intentar conectarnos a una BD.

En caso de que haya habido un error se informa del error y luego se ejecuta exit() finalizando el script.

busquedaAjax.php

Ya tenemos el script para conectarnos a la BD. Ahora, cada script que quiera conectarse a la BD sólo necesitará importarlo.

<?php
include('connectDB2.php');

$id = $_GET['q'];

$stmt = $connectionDB->prepare("SELECT * FROM cliente c WHERE c.idcliente = ?");

$stmt->bind_param('i',$id);
$stmt->execute();

$result = $stmt->get_result();
echo json_encode($result->fetch_assoc());
?>

Como observamos, la primera línea importa el script de conexión.

Lo segundo que hacemos es recuperar el id del cliente a través de $id = $_GET[‘q’]. Este será el valor que usaremos como criterio de búsqueda. Pudimos haber elegido cualquier otro, tal como su apellido (pero cuidado que pueden haber varios clientes con el mismo apellido), su número de documento, teléfono, etc. O incluso más de un parámetro.

Las siguientes tres instrucciones consisten en realizar la consulta a la BD. Analicemoslas:

$stmt = $connectionDB->prepare(“SELECT * FROM cliente c WHERE c.idcliente = ?”);

$stmt->bind_param(‘i’,$id);
$stmt->execute();

La primera de ellas prepara la sentencia para su ejecución y devuelve un objeto sentencia. Los símbolos “?” se conocen como marcadores de parámetros y son reemplazados por valores reales en la siguiente instrucción

A continuación, la instruccion bind_param reemplazara los marcadores de parámetros con sus valores reales. La indica que $id es un integer, o sea un número entero. En caso de que allá mas de un marcador de parámetro estos deberán ir en el orden en que aparezcan en la sentencia.

Finalmente execute ejecuta la sentencia que fuera previamente preparada.

Una vez ejecutada la consulta, para obtener el conjunto de resultados de la misma lo hacemos mediante $stmt->get_result(). Si la respuesta es vacía el resultado será FALSE.

La última sentencia de nuestro script devolverá el resultado a quien lo haya solicitado, en este caso busquedaAjaxCliente.html

echo json_encode($result->fetch_assoc()). La función fetch_assoc(), devuelve los resultados de la consulta como un array asociativo, o sea clave->valor, donde las claves son los atributos de la tabla cliente.

json_encode por su parte, arma lo devuelto por $result->fetch_assoc() con un formato JSON.

busquedaAjaxCliente.html




<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="estilo.css">
<script src="./jquery-1.11.3.js"></script>
<script type="text/javascript">

 function searchByAjax(str){
 $.ajax(
 {
 method:"GET",
 url:"busquedaAjax.php",
 data:{q: str}
 }
 ).done(
 function(response){
 response = JSON.parse(response);
 if(response == null){
 $("#error").text("Error, no existe el cliente");
 $("#error").show();
 }else{
 $("#nombre").val(response['nombre']);
 $("#telefono").val(response['telefono']);
 $("#mail").val(response['mail']);
 }
 }
 ).fail(
 function(){
 $("#error").text("Hubo un error en la obtencion de los datos");
 $("#error").show();
 }
 );
 }

$(document).ready(function() {

 $("#error").hide();
 $("#busqueda").on("click", function(){
 $("#nombre").val("");
 $("#telefono").val("");
 $("#mail").val("");
 searchByAjax($("#id").val());
 });

});
</script>

</head>
<body>

<p>Ingrese el id del cliente: <input type ="text" name="id" id="id"/>
<button id="busqueda">Buscar</button>
</p>
<p id="error" class="error"></p>
<br/>
<br/>
<table>
 <tr>
 <td>Nombre: </td>
 <td><input type ="text" name="nombre" id="nombre"/></td>
 </tr>
 <tr>
 <td>Telefono: </td>
 <td><input type ="text" name="telefono" id="telefono"/></td>
 </tr>
 <tr>
 <td>Mail: </td>
 <td><input type ="text" name="mail" id="mail"/></td>
 </tr>
</table>
</body>
</html>

Este será nuestro front end, un html que envia a nuestro script el id de un cliente para obtener los datos del mismo. Nuestro formulario esta compuesto de un input en el que el usuario debe introducir el id y un boton. Los resultados se colocarán en una tabla.

Al botón cuyo id es busqueda se le asocica mediante JQuery el evento click, el cual llamara a la funcion searchByAjax con un parámetro que será nuestro id.

Nuestra función searchByAjax utiliza la función de ajax de la biblioteca de JQuery la cual nos facilita la escritura de la solicitud ajax. A dicha función hay que pasarle una serie de parametros, el primero de ellos:

{
method:"GET",
url:"busquedaAjax.php",
data:{q: str}
}

Es un objeto que determina la forma en que le pasaremos los parámetros al script, en este caso a través de GET. La url del script.Los parámetros para el script, en este caso el parámetro ira en la url, su nombre será q y tendrá el valor que venga en str.

Una vez que la llamada a el meétodo ajax haya finalizado, se ejecutará lo que esta dentro de .done() que en este caso es una función que tratará con la respuesta devuelta por el script.

En caso de que el falle, se ejecutara lo que este dentro de .fail()

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

10 + 17 =