2. Qué veremos hoy
▪ Índice
o Extensión MySQLi
• Interfaz procedimental
• Interfaz orientada a objetos
o Conexión
o Ejecutar sentencias
o Preparar sentencias de manera segura
4. MySQLi extensión de PHP para MySQL
Compatible con ambos sistemas
gestores de base de datos
MySQL o MariaDB
5. MySQLi extensión de PHP para MySQL
En PHP 7 quedó obsoleta la
extensión antigua de MySQL, por lo
que estamos obligados a usar MySQLi
si queremos estar al día.
MySQLi se diseñó para MySQL 4.1.3 o
superior. (Vamos por MySQL 8)
MySQL 4.1.3 y PHP 7
7
6. MySQLi extensión de PHP para MySQL
La documentación de PHP es muy completa y sencilla de
entender.
https://www.php.net/manual/es/book.mysqli.php
* Ojo con los tutoriales de Internet desactualizados!
Documentación
7. MySQLi extensión de PHP para MySQL
Recordar que PHP dispone de diversas interfaces de acceso a
las bases de datos.
- PDO (Objetos de datos de PHP)
Capa de abstracción de base de datos de PHP
Otros mecanismos de acceso
8. MySQLi extensión de PHP para MySQL
Instalación
MampLaragon
https://www.apachefriends.org/es/index.html
https://laragon.org/
https://www.mamp.info/en/
10. Interfaces de la extensión MySQLi
- Procedimental: Un API basado en funciones
- Objetos: Un API basado en programación orientada a objetos
Dos interfaces distintas
11. Interfaz Procedimental
Interfaz basada en funciones
- Es más sencilla para muchos desarrolladores, ya que no
requiere entender conocimientos de objetos.
- Las migraciones de la interfaz antigua de MySQL a MySQLi son
más directas.
13. Interfaz Objetos
Interfaz basada en objetos
- Desarrolladores acostumbrados a la programación orientada a
objetos la pueden preferir.
- Nos ahorra el envío de parámetros a las funciones, como la
referencia de la conexión a la base de datos.
- No existen diferencias en cuanto a rendimiento.
16. Conexiones
Variables de entorno
Es interesante usar variables de entorno en las conexiones.
https://github.com/vlucas/phpdotenv
Una librería para gestión de variables de entorno
.
También es importante gestionar posibles errores de las conexiones
17. Conexiones
Separación del código
En la medida de lo posible es importante separar el código por responsabilidades.
Podemos crear archivos que se encarguen de los accesos a la base de datos y aislar
el resto del código de la aplicación de la complejidad de acceso a los datos.
19. Preparar sentencias
Inyección de SQL
Es un ataque mediante el cual se puede conseguir ejecutar cualquier sentencia o
sentencias arbitrarias, definidas por un atacante, en la base de datos.
PHP 7 introdujo un mecanismo de control automático de la inyección de SQL, no
obstante, las sentencias preparadas nos aseguran que este tipo de ataques no se
puedan llegar a producir.
20. Preparar sentencias
Preparar la sentencia
Creamos la sentencia con los espacios para colocar las variables que queremos
introducir.
21. Preparar sentencias
Bindear los datos
Asociamos los datos que queremos introducir en los "huecos" de la sentencia
preparada.
22. Preparar sentencias
Ejecutar la sentencia
Ejecutamos la sentencia preparada para que se produzca la operación sobre la base
de datos.
Podemos ejecutar la sentencia varias veces, con nuevos datos si se desea.