Mysqli orientado a Objetos – Conectarse a Base de datos

Este tutorial será muy diferente a los que has visto con respecto a conectarse a una base de datos MySQL, en primer lugar porque usaremos Mysqli que es la extensión de mysql clásico (permite el uso de objetos y está optimizado para MySql 4.1.3 o superior además que los mismos desarrolladores de PHP piden usarlo sobre la versión estándar.

¿Qué es la extensión mysqli de PHP?

La extensión mysqli, o como a veces se le conoce, la extensión de MySQL mejorada, se desarrolló para aprovechar las nuevas funcionalidades encontradas en los sistemas MySQL con versión 4.1.3 o posterior. La extensión mysqli viene incluida en las versiones PHP 5 y posteriores.

La extensión mysqli contiene numerosos beneficios, siendo estas las mejoras principales respecto a la extensión mysql:

  • Interfaz orientada a objetos
  • Soporte para Declaraciones Preparadas
  • Soporte para Múltiples Declaraciones
  • Soporte para Transacciones
  • Mejoradas las opciones de depuración
  • Soporte para servidor empotrado

Teniendo esa información previa pasaremos al código fuente para conectarnos a una base de datos y obtener los registros, el código está explicado línea por línea

<?php
$server     = 'localhost'; //servidor
$username   = 'xxxxxx'; //usuario de la base de datos
$password   = 'yyyyyy'; //password del usuario de la base de datos
$database   = 'mibasedatos'; //nombre de la base de datos

$conexion = new mysqli();
@$conexion->connect($server, $username, $password, $database);
/*
 Las 2 lineas de arriba se pueden resumir en:
 $conexion = @new mysqli($server, $username, $password, $database);
 Recuerden que el @ adelante de las funciones significa que no generará error o warnings
 Tema: http://www.elcodigofuente.com/uso-del-arroba-funciones-php-585/
*/
if ($conexion->connect_error) //verificamos si hubo un error al conectar, recuerden que pusimos el @ para evitarlo
{
    die('Error de conexión: ' . $conexion->connect_error); //si hay un error termina la aplicación y mostramos el error
}

$sql="SELECT * from mitabla limit 10"; //traemos 10 registros

$result = $conexion->query($sql); //usamos la conexión para dar un resultado a la variable

if ($result->num_rows > 0) //si la variable tiene al menos 1 fila entonces seguimos con el código
{
    while ($row = $result->fetch_array()) 
    //MYSQLI_ASSOC= El arreglo como siempre, es decir [campo1]->valor, [campo2]->valor
    //MYSQLI_NUM= Como indice [0]-> Valor de campo 1, [0]->valor de campo2
    //MYSQLI_BOTH= por defecto, trae ambos, es decir que si la tabla es de 2 campos, tendremos una array de 4 posiciones
    // [0] -> Valor campo1, [campo1] -> Valor de campo1, [1] -> Valor de campo2, [campo2]-> Valor de Campo1
    {
        echo "<pre>";
        print_r($row); //imprimimos el contenido de array
        echo "</pre>";
        echo "------------";
    }
}
else
{
    echo "No hubo resultados";
}
$conexion->close(); //cerramos la conexión
?>

Como ven todo está orientado a Objetos y no se usa las funciones de mysql_FUNCION directamente sino a través de una variable Objeto.

Comments

3 respuestas a “Mysqli orientado a Objetos – Conectarse a Base de datos”

  1. Felipe Acosta Avatar

    Buenas noches,
    loque pasa es que cuando trato de usar el objeto de la clase varias veces es decir tirar 2 querys
    solo me funciona el primero y el segudo no
    sale el error
    Fatal error: Call to a member function fetch_array() on boolean in D:\xampp\htdocs\levelservice\dbManager.class.php on line 48

    1. Jhonnyf Avatar
      Jhonnyf

      Por el error que tienes, me parece que estas redifiniendo tu variable resultado como BOOLEAN; o tambien puede que te devuelva 0 resultados (por tanto es false)

  2. jose carlos Avatar
    jose carlos

    Excelente ayuda..!

    Estoy desarrollando una web y necesito agregar codigo fuente como se muestra en esta página con todo y sus respectivas sintaxis.. como se llama eso?

Agregue un comentario a jose carlos Cancelar respuesta

Su dirección de correo no se hará público. Los campos requeridos están marcados *