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.