SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Miguel Angel Alvarez
MySQLi: uso correcto
@midesweb
@EscuelaIT
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
MySQLi
MySQLi extensión de PHP para MySQL
Compatible con ambos sistemas
gestores de base de datos
MySQL o MariaDB
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
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
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
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/
Interfaces
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
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.
Interfaz Procedimental
Interfaz basada en funciones
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.
Interfaz Objetos
Interfaz basada en objetos
Conexiones
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
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.
Preparar sentencias
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.
Preparar sentencias
Preparar la sentencia
Creamos la sentencia con los espacios para colocar las variables que queremos
introducir.
Preparar sentencias
Bindear los datos
Asociamos los datos que queremos introducir en los "huecos" de la sentencia
preparada.
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.
Gracias
Miguel Angel Alvarez
insight@insightcreativos.com
649 76 76 31
@midesweb

Contenu connexe

Tendances

Andrés gonzález suárez acceso a ftp a través de usuarios almacenados en my sql
Andrés gonzález suárez   acceso a ftp a través de usuarios almacenados en my sqlAndrés gonzález suárez   acceso a ftp a través de usuarios almacenados en my sql
Andrés gonzález suárez acceso a ftp a través de usuarios almacenados en my sql
Andrés González Suárez
 
Curso Blog Marketing con Wordpress 02 instalacion local
Curso Blog Marketing con Wordpress 02 instalacion localCurso Blog Marketing con Wordpress 02 instalacion local
Curso Blog Marketing con Wordpress 02 instalacion local
David Vaquero
 

Tendances (20)

Introducción a herramientas de Roots (José Debuchy, WCBA 2017)
 Introducción a herramientas de Roots (José Debuchy, WCBA 2017) Introducción a herramientas de Roots (José Debuchy, WCBA 2017)
Introducción a herramientas de Roots (José Debuchy, WCBA 2017)
 
Integrantes
IntegrantesIntegrantes
Integrantes
 
DevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasDevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas Rotas
 
13.servidor http
13.servidor http13.servidor http
13.servidor http
 
Servidores web
Servidores webServidores web
Servidores web
 
Semana 3 Mongodb
Semana 3   MongodbSemana 3   Mongodb
Semana 3 Mongodb
 
Apache ha muerto, Viva Lighttpd
Apache ha muerto, Viva LighttpdApache ha muerto, Viva Lighttpd
Apache ha muerto, Viva Lighttpd
 
Cuadro comparativo 2
Cuadro comparativo 2Cuadro comparativo 2
Cuadro comparativo 2
 
servidor
servidorservidor
servidor
 
Andrés gonzález suárez acceso a ftp a través de usuarios almacenados en my sql
Andrés gonzález suárez   acceso a ftp a través de usuarios almacenados en my sqlAndrés gonzález suárez   acceso a ftp a través de usuarios almacenados en my sql
Andrés gonzález suárez acceso a ftp a través de usuarios almacenados en my sql
 
Symfony2 Introducción
Symfony2 IntroducciónSymfony2 Introducción
Symfony2 Introducción
 
Typo3: El CMS que vino del frío
Typo3: El CMS que vino del fríoTypo3: El CMS que vino del frío
Typo3: El CMS que vino del frío
 
Curso Blog Marketing con Wordpress 02 instalacion local
Curso Blog Marketing con Wordpress 02 instalacion localCurso Blog Marketing con Wordpress 02 instalacion local
Curso Blog Marketing con Wordpress 02 instalacion local
 
Tools for High Availability
Tools for High AvailabilityTools for High Availability
Tools for High Availability
 
Proyecto WordPressA - QuantiKa14
Proyecto WordPressA - QuantiKa14Proyecto WordPressA - QuantiKa14
Proyecto WordPressA - QuantiKa14
 
Desarrollo y Programacion WEB
Desarrollo y Programacion WEBDesarrollo y Programacion WEB
Desarrollo y Programacion WEB
 
Administración de Servidores
Administración de ServidoresAdministración de Servidores
Administración de Servidores
 
Semana 7 Despliegue a producción
Semana 7   Despliegue a producciónSemana 7   Despliegue a producción
Semana 7 Despliegue a producción
 
Introducción a Silex
Introducción a SilexIntroducción a Silex
Introducción a Silex
 
Zabbix
ZabbixZabbix
Zabbix
 

Similaire à El uso correcto de MySQLi

Curso TIC de PHP y MSQL
Curso TIC de PHP y MSQLCurso TIC de PHP y MSQL
Curso TIC de PHP y MSQL
Wilian
 
Curso TIC de PHP y MSQL Parte 1
Curso TIC de PHP y MSQL Parte 1Curso TIC de PHP y MSQL Parte 1
Curso TIC de PHP y MSQL Parte 1
Wilian
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
genaro martinez
 
introducción a base de datos MySQL
introducción a base de datos MySQLintroducción a base de datos MySQL
introducción a base de datos MySQL
Javier Gutierrez
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVA
Helmilpa
 
Trabajo de sistemas de informacion
Trabajo de sistemas de informacionTrabajo de sistemas de informacion
Trabajo de sistemas de informacion
Evelin Oña
 

Similaire à El uso correcto de MySQLi (20)

Curso TIC de PHP y MSQL
Curso TIC de PHP y MSQLCurso TIC de PHP y MSQL
Curso TIC de PHP y MSQL
 
Curso TIC de PHP y MSQL Parte 1
Curso TIC de PHP y MSQL Parte 1Curso TIC de PHP y MSQL Parte 1
Curso TIC de PHP y MSQL Parte 1
 
Dreamweaver
DreamweaverDreamweaver
Dreamweaver
 
Dprn3 u3 a1_guph
Dprn3 u3 a1_guphDprn3 u3 a1_guph
Dprn3 u3 a1_guph
 
C. comparativo servidores & servicios
C. comparativo servidores & serviciosC. comparativo servidores & servicios
C. comparativo servidores & servicios
 
Ds dprn3 u3_a1_alcz
Ds dprn3 u3_a1_alczDs dprn3 u3_a1_alcz
Ds dprn3 u3_a1_alcz
 
Laravel
LaravelLaravel
Laravel
 
php
phpphp
php
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
JDBC
JDBCJDBC
JDBC
 
Wamp server
Wamp serverWamp server
Wamp server
 
introducción a base de datos MySQL
introducción a base de datos MySQLintroducción a base de datos MySQL
introducción a base de datos MySQL
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVA
 
Laravel vc
Laravel vcLaravel vc
Laravel vc
 
Phpmyadmin
PhpmyadminPhpmyadmin
Phpmyadmin
 
Trabajo de sistemas de informacion
Trabajo de sistemas de informacionTrabajo de sistemas de informacion
Trabajo de sistemas de informacion
 
Trabajar con bases de datos desde ASP.NET
Trabajar con bases de datos desde ASP.NETTrabajar con bases de datos desde ASP.NET
Trabajar con bases de datos desde ASP.NET
 
5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web
 
Sistema.inventario@hotmail.com
Sistema.inventario@hotmail.comSistema.inventario@hotmail.com
Sistema.inventario@hotmail.com
 
curso_mysql.pdf
curso_mysql.pdfcurso_mysql.pdf
curso_mysql.pdf
 

Plus de Arsys

Plus de Arsys (20)

Whitepaper Arsys - Cómo reducir el consumo energético de un data center
Whitepaper Arsys - Cómo reducir el consumo energético de un data centerWhitepaper Arsys - Cómo reducir el consumo energético de un data center
Whitepaper Arsys - Cómo reducir el consumo energético de un data center
 
Whitepaper: La importancia del Delegado de Protección de Datos en una empresa...
Whitepaper: La importancia del Delegado de Protección de Datos en una empresa...Whitepaper: La importancia del Delegado de Protección de Datos en una empresa...
Whitepaper: La importancia del Delegado de Protección de Datos en una empresa...
 
Contenedores y protección de datos empresariales | Whitepaper
Contenedores y protección de datos empresariales | WhitepaperContenedores y protección de datos empresariales | Whitepaper
Contenedores y protección de datos empresariales | Whitepaper
 
Cómo elegir un software CRM adecuado a las necesidades de la organización
Cómo elegir un software CRM adecuado a las necesidades de la organizaciónCómo elegir un software CRM adecuado a las necesidades de la organización
Cómo elegir un software CRM adecuado a las necesidades de la organización
 
Webinar - eCommerce: ¿Cómo puedo vender en Amazon?
Webinar - eCommerce: ¿Cómo puedo vender en Amazon?Webinar - eCommerce: ¿Cómo puedo vender en Amazon?
Webinar - eCommerce: ¿Cómo puedo vender en Amazon?
 
Webinar - Primeros pasos con plesk
Webinar - Primeros pasos con pleskWebinar - Primeros pasos con plesk
Webinar - Primeros pasos con plesk
 
Webinar- Requisitos legales para crear una Tienda Online
Webinar- Requisitos legales para crear una Tienda OnlineWebinar- Requisitos legales para crear una Tienda Online
Webinar- Requisitos legales para crear una Tienda Online
 
Whitepaper - ¿Cómo elegir entre VPS, Servidor Cloud o Servidor dedicado?
Whitepaper - ¿Cómo elegir entre VPS, Servidor Cloud o Servidor dedicado?Whitepaper - ¿Cómo elegir entre VPS, Servidor Cloud o Servidor dedicado?
Whitepaper - ¿Cómo elegir entre VPS, Servidor Cloud o Servidor dedicado?
 
Whitepaper - Cómo implementar el teletrabajo seguro en la empresa
Whitepaper - Cómo implementar el teletrabajo seguro en la empresaWhitepaper - Cómo implementar el teletrabajo seguro en la empresa
Whitepaper - Cómo implementar el teletrabajo seguro en la empresa
 
Whitepaper - Guía Básica del Cloud Computing
Whitepaper - Guía Básica del Cloud ComputingWhitepaper - Guía Básica del Cloud Computing
Whitepaper - Guía Básica del Cloud Computing
 
Webinar – Introducción a Google Analytics
Webinar – Introducción a Google AnalyticsWebinar – Introducción a Google Analytics
Webinar – Introducción a Google Analytics
 
Guia automatizar herramientas-grc
Guia automatizar herramientas-grcGuia automatizar herramientas-grc
Guia automatizar herramientas-grc
 
Whitepaper - Cómo crear un menú desplegable en WordPress
Whitepaper - Cómo crear un menú desplegable en WordPress Whitepaper - Cómo crear un menú desplegable en WordPress
Whitepaper - Cómo crear un menú desplegable en WordPress
 
Whitepaper-Cómo gestionar tu WordPress por medio de la línea de comandosd
Whitepaper-Cómo gestionar tu WordPress por medio de la línea de comandosdWhitepaper-Cómo gestionar tu WordPress por medio de la línea de comandosd
Whitepaper-Cómo gestionar tu WordPress por medio de la línea de comandosd
 
La conversión de dominios internacionalizados: Punycode
La conversión de dominios internacionalizados: PunycodeLa conversión de dominios internacionalizados: Punycode
La conversión de dominios internacionalizados: Punycode
 
Cómo configurar un home office totalmente productivo
Cómo configurar un home office totalmente productivoCómo configurar un home office totalmente productivo
Cómo configurar un home office totalmente productivo
 
Whitepaper - Elige el servicio de hosting más indicado para tu proyecto
Whitepaper - Elige el servicio de hosting más indicado para tu proyectoWhitepaper - Elige el servicio de hosting más indicado para tu proyecto
Whitepaper - Elige el servicio de hosting más indicado para tu proyecto
 
Webinar –Qué servidor elegir para tu proyecto, Cloud, Dedicados o VPS
Webinar –Qué servidor elegir para tu proyecto, Cloud, Dedicados o VPSWebinar –Qué servidor elegir para tu proyecto, Cloud, Dedicados o VPS
Webinar –Qué servidor elegir para tu proyecto, Cloud, Dedicados o VPS
 
Webinar - Instalar VMware en un servidor dedicado
Webinar - Instalar VMware en un servidor dedicadoWebinar - Instalar VMware en un servidor dedicado
Webinar - Instalar VMware en un servidor dedicado
 
Whitepaper - Como mejorar el Business Intelligence de la empresa a través de ...
Whitepaper - Como mejorar el Business Intelligence de la empresa a través de ...Whitepaper - Como mejorar el Business Intelligence de la empresa a través de ...
Whitepaper - Como mejorar el Business Intelligence de la empresa a través de ...
 

Dernier

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Dernier (11)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 

El uso correcto de MySQLi

  • 1. Miguel Angel Alvarez MySQLi: uso correcto @midesweb @EscuelaIT
  • 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.