Usuario:ManuelRomero/DAW/distancia/BD

=EXTENSIONES DE PHP PARA TRABAJAR CON BASES DE DATOS=

Clases con las que vamos a trabajar
;mysqli ;mysql_result ;mysql_stmt ;PDO ;PDOStatemnet
 * Extension MYSQLI
 * Extension PDO

Extensión MYSQLI

 * Trabajaremos orientado a Objetos, con la clase mysqli

Obtener una instancia

 * Objeto que me permitirá interactuar con la base de datos
 * Alias del constructor
 * En ambos casos parámetros, no son obligatorios, pero en algún momento necesarios si quiero operar con una base de datos necesito saberlo;
 * Si no lo aportamos ahora, después con los métodos correspondientes

Verificar conexión

 * Con los atributos connect_error y connect_errno de la clase mysqli
 * Si su valor es null todo ok, si no contienen la información del error producido

De tipo INSERT DELETE UPDATE

 * El método retorna bool que indica si se ha realizado de forma correcta o no la sentencia.
 * no indica el número de filas afectadas (puede dar true y no haber afectado a ninguna fila por ejemplo un delete o un update).
 * Verificar número de tuplas afectadas por la setencia
 * Atributo affect_rows de la clase mysqli

De tipo SELECT

 * En este caso el método retorna un objeto de la case mysqli_result null en caso de no haberse podido realizar.

Clase mysqli_result

 * Un objeto de esta clase contiene el resultado de una consulta junto con un puntero para pdoer recorrelo, lo que conocíamos como cursor.

Instanciar mysqli_result

 * resultado del método query de la clase mysqli con una consulta.

Recorrelo
fetch_array lo retorna como un array asociativo o indexado fetch_row lo retorna como un array indexado fetch_assoc lo retorna como un array asociativo fetch_object lo retorna como un objeto
 * Tenemos diferentes formas de hacer lo mismo
 * Métodos fetch_assoc, fetch_row, fetch_object de la clase mysqli_result
 * Hacen lo mismo, obteniendo el resultado de diferente manera
 * Recuperar la fila del resultado de la consulta que actualmente está apuntada y avanzan el puntero a la siguiente fila si la hay.
 * Cada método retorna esa fila de una manera

Liberarlo
Para mi, muy importante liberar las cosas que ya no se usen, es como recoger la habitación, mientras quepan cosas podemos seguir almacenanado ropa en la cama, pero cuando ya no quepa más ...
 * Método free de la clase mysqli_result.

La clase mysqli_stmt

 * Esta clase permiete gestionar las Consultas preparadas
 * Es otra manera de ejecutar las sentencias
 * Consiste en crear una instancia de la clase mysqli_stmt

Consultas preparadas de tipo INSERT UPDATE Y DELETE

 * Vamos a ver con parámetros, sin parámetros es igual pero sin usar ? Y sin asignar bind_param

Consultas preparadas de tipo SELECT
1 EXTENSIONES DE PHP PARA TRABAJAR CON BASES DE DATOS 1.1 Clases con las que vamos a trabajar
 * Se usan los mismos métodos.
 * Se añaden para recuperar los valores.

Extensión PDO

 * Es una extensión nativa de php para operar con diferentes bases de datos
 * No habría que cambiar nada de código solo el conector
 * Con ello el mismo código se puede adaptar a diferentes gestores de bases de datos

Obtener una instancia

 * Para crear una instancia
 * En este caso las opciones solemos usar 4 parámetros para poder tener ya acceso a la base de datos
 * Solo el primero es obligatorio, donde se especifica el tipo de gestor de bases de datos con el que se trabaja

Verificar conexión

 * Verificamos si el valor de la conexión es difente a null
 * Tambien podemos usar excepciones

De tipo INSERT DELETE UPDATE
control de excepciones, o ver el método errorCode o errorInfo de la clase PDO int exec ($sentencia)
 * Método exec que retorna el número de filas afectadas. No indica si hubo un error en la ejecución.
 * Para ello se puede usar el

De tipo SELECT
PDOStatement query ($sentencia);
 * En este caso usaremos el método query(...) de la clase PDO
 * Este médoto retorna un objeto de la case PDOStatemne

Clase PDOStatement

 * Esta es una clase para poder gestionar el resultado de una consutla
 * Esta consulta puede retornar una colección de filas y la funcionalidad de recorrerlos.

Instanciar PDOStatement

 * Un objeto de esta clase se instancia con el método query de la clase PDO

Recorrelo

 * Para recorrelo usaremos el método fetch(...)
 * Este método recibe un parámetro que indicará de forma extraerá la fila, como un array indexado, asociativo como objeto, ...
 * Si no pasamos parámetro el resultado se puede ver como un array asociativo o indexado
 * Si queremos cambiar el modo de obtener cada fila
 * PDO::FETCH_ASSOC. Devuelve solo un array asociativo.
 * PDO::FETCH_NUM. Devuelve solo un array con claves numéricas.
 * PDO::FETCH_BOTH. Devuelve un array con claves numéricas y asociativas. Es el comportamiento por defecto.
 * PDO::FETCH_OBJ Lo devuelve ocmo objeto

Liberarlo

 * Para liberar un objeto de la clase PDOStatemenr usamos el método closeCursor
 * Hacemos un recorrido obteniendo cada fila como un array asociativo

Consultas preparadas

 * Para hacer una consulta preparada creamos un objeto de la clase PDOStatement con el método prepare de la clase PDO

Consultas preparadas de tipo INSERT UPDATE Y DELETE

 * Vamos a ver con parámetros
 * En este caso tenemos tres formas de asignar paráemtros
 * 1.- forma ? ==> bindParam(1,$valor)
 * En este caso especificamos la sentencia especificando ? donde debiera de haber un valor
 * Posteriormente con el método bindParam(posicion, $valor), especifricamos el número de parámetro (1, 2, 3, ..) y el valor
 * Se ejectua una vez el método por cada valor.
 * 2.- forma :variable ==> bindParam(:variable, $valor);
 * En este caso en lugar de ? usamos :nombreVariable. Este mismo nombre es el que usaremos en el método 'bindParam(...)
 * 3.- En la ejecución de la consulta
 * En cualquiera de los casos anteriores, en lugar de usar bindParam, paremos un array a execute con los valores.

Consultas preparadas de1 tipo SELECT

 * Una vez realizado el método execute, si la consulta retorna un conjunto de filas, procedemos igual que anteriormente

Fichero resumen

 * Aquí dejamos un fichero resumen de los métodos en una tabla