Consultar la base de datos

En primer lugar deberemos establecer la consulta, en nuestro caso un SELECT como el siguiente:

$consulta = " SELECT L.isbn, L.titulo, L.precio, A.nombre as autor " .
   " FROM libros as L, autores as A, libros_autores as LA " .
   " WHERE L.id = LA.fk_libros AND " .
   "       A.id = LA.fk_autores " .
   " ORDER BY L.titulo";

Aunque también podremos realizar consultas de acción como INSERT, DELETE y UPDATE.

Para realizarla utilizaremos la siguiente función:

**Estilo por procedimientos:**

mixto mysqli_query ( mysqli $identificador_de_enlace, string $consulta)

En el primer ejemplo:

$result = mysqli_query($db, $consulta);

**Estilo orientado a objetos (método):**

class mysqli {
   mixto query ( string $consulta )
}

En el segundo ejemplo:

$result = $db->query($consulta);

La consulta no tiene porque teminar en ';' como cuando las hacemos desde la consola de comandos de MySQL.

El manual de PHP nos advierte que este método o función (según el estilo) devolverá **false** en caso no haber podido realizar la consulta SQL (error en el SQL u otros).
Una forma útil de comprobar si el SQL enviado es correcto es comprobar si la variable $result es igual a FALSE. Si lo es, lanzaríamos una excepción donde mostraríamos el mensaje de error devuelto por MySQL.

Veamos un ejemplo de código que realiza esa comprobación:

if ($result === FALSE)
    throw new Exception('Error realizando consulta: '.$consulta. ' ' . $db->error, $db->errno);

En caso de éxito puede devolver dos cosas:

  • true en el caso de que las consultas sean instrucciones de tipo INSERT, UPDATE o DELETE (Action Querys) sobre la base de datos. En estos casos podremos usar la función mysqli_affected_rows($db) o$db->affected_rows para obtener el número de filas afectadas tras la última operación.

  • resource u objeto MySQLI Result según la metodología utilizada (procedimientos u objetos). Los dos devuelven los resultados de la consulta, en el caso de sentencias SELECT, SHOW, DESCRIBE o EXPLAIN. Para averiguar más información sobre la clase MySQLI Result podemos acceder al manual de PHP directamente en el siguiente enlace: http://www.php.net/manual/es/class.mysqli-result.php

results matching ""

    No results matching ""