
desde PHP 7 fue lanzado y fue cerrado el soporte para PHP 5, llevaron a muchas empresas de hosting PHP 5 de sus servidores y los desarrolladores PHP se vieron obligados a migrar su código para trabajar con PHP 7.
uno de los cambios de PHP 7 era la discontinuación de la extensión original de MySQL. Los desarrolladores tenían que escoger migrar el código para utilizar la extensión MySQLi o DOP.
Lee este artículo para conocer las diferencias y decidir cuál es mejor para usted recomienda migrar el código para trabajar en PHP 7 o posterior, así como conocer algunos paquetes que usan MySQLi o PDO para realizar propósitos comunes de la base de datos como backup, seguridad, registro de usuario y login, abstracción de base de datos , Mapeo objeto-relacional (ORM) etc.
1-PDO versus MySQLi vs MySQL
como todos sabemos, MySQL es una base de datos administración sistema abierto fuente relacional (RDBMS) que usa lenguaje de consulta estructurado (SQL). MySQL es un componente central del software de la aplicación Web de fuente abierta de la lámpara (y otros “AMP”): Apache MySQL y PHP.
MySQL es una parte esencial de casi todas aplicaciones PHP de código abierto. Son buenos ejemplos de secuencias de comandos basado en MySQL y PHP, phpBB, osCommerce y Joomla.
PHP solía venir con la extensión MySQL original integrada que es compatible con versiones anteriores de MySQL. Sin embargo, esta extensión fue rechazada a favor de MySQLi (i de mejorada mejorada). Al mismo tiempo, PHP ha seguido evolucionando y se introdujo la extensión PDO (PHP Data Objects) para convertirse en una interfaz común para tener acceso a muchos tipos de base de datos.
MySQLi es otra de las tres formas de acceder a un servidor de base de datos MySQL. Como la extensión de MySQL, MySQLi nuevo está diseñado para hacer un mejor uso de las últimas características de MySQL server.
la extensión PHP datos objetos (DOP) define una interfaz ligera para acceder a bases de datos en PHP. Cada controlador de base de datos que es compatible con la interfaz PDO puede exponer características específicas de la base de datos así como funciones ordinarias.
el PDO proporciona una capa de abstracción de acceso a datos, lo que significa que, independientemente del tipo de base de datos que utilizas, las mismas funciones están disponibles para realizar consultas y obtener resultados. La DOP no proporciona una abstracción de base de datos completa. Es, no vuelve a escribir consultas SQL o emular características faltantes. Si necesita esta funcionalidad, debe utilizar un paquete completo de capa de abstracción.
2-gap para conectar usando MySQLi y DOP
tanto la denominación de origen protegida como la MySQLi proporciona una interfaz orientada a objetos a las funciones de la extensión MySQLi, pero también ofrece una API procedimental, que facilita la comprensión de los nuevos usuarios. Si estás familiarizado con la extensión PHP MySQL original, se encuentra la migración para el procedimiento de interfaz de MySQLi más fácil. Abajo está un ejemplo:
//$pdo PDO = new PDO (' mysql: "." host = localhost; ". "dbname = base de datos ',' username ',' contraseña '); mysqli mysqli_connect, forma procesal $mysqli = ('localhost', 'username', 'password', 'database'); mysqli, orientado a objetos forma $mysqli = new mysqli ('localhost', 'username', 'password', 'database');
la principal ventaja de la DOP en la MySQLi es en el soporte de base de datos. El PDO es compatible con 12 diferentes tipos de base de datos, en comparación con MySQLi, que sólo es compatible con MySQL.
cuando tenga que cambiar su proyecto para utilizar otra base de datos, la DOP simplifica el proceso. Por lo tanto, todo lo que tienes que hacer es cambiar la cadena de conexión y a lo más algunas consultas si utilizan cualquier sintaxis que no es compatible con su nueva base de datos.
3-PDO usar sentencias preparadas MysQLi seguridad versus
tanto el PDO como soporte MySQLi para consultas preparadas. Esto ayuda a prevenir problemas de seguridad de la inyección de SQL, ya que sólo utiliza consultas preparadas para insertar parámetros dinámicos en las consultas.
por ejemplo, considere un hacker tratando de inyectar SQL malicioso pasando un valor forjado para el código del parámetro de una petición HTTP POST que podría ser imitado, así:
$ _POST ['code'] = ' '; DELETE FROM productos; /*";
si no escapar de este valor, se insertará en la consulta como lo es, y así sería borrar todas las filas de la tabla productos.
una manera de hacer las consultas más seguro evitar SQL injection cita valores de parámetro de cadena para insertar caracteres de escape.
/ / DOP, "manual" escapar $name = PDO:: cotización ($ _POST ['code']); $pdo-> consulta ("SELECT id, nombre de los productos de código donde = $code"); mysqli, manual escapar $name = mysqli_real_escape_string ($ _POST ['code']); $mysqli-> consulta ("SELECT id, nombre de productos donde nombre = ' $code '");
PDO:: quote() no sólo escapa a la cadena, pero también agrega citas. mysqli_real_escape_string () escapar de la cadena, por lo que es necesario agregar manualmente las comillas.
/ / DOP, preparado declaración $pdo-> prepare (' SELECT id, nombre de los productos de código donde =: código '); $pdo-> execute (array (': código = > $ _POST ['code'])); mysqli, preparado declaraciones $query = $mysqli-> prepare (' SELECT id, nombre de los usuarios de código donde =? '); $query-> bind_param (' ', $ _POST ['code']); $query-> ejecutar ();
DOP también admite consultas de cliente. Esto significa que cuando prepara una consulta, no necesita comunicarse con el servidor.
como la MySQLi preparado declaraciones usan nativo, realmente puede ser más rápido utilizar mysqli_real_escape_string en lugar de usar comandos preparados, si bien todavía es una solución segura.
4- vs DOP MySQLi vs MySQL Performance Benchmark
hubo algunos PHP MySQL benchmark pruebas de rendimiento hechas hace varios años por Jonathan Robson, así como por Radu Potop. A pesar de estas pruebas se han realizado con PHP 5.3 y actualmente estamos utilizando el PHP de 7 o más adelante, consideramos estos resultados como una referencia.
básicamente muestran que, para consultas SELECT usando MySQLi preparado declaración corre un poco más rápido. Aún así, puede que no sea significativa, dependiendo de su propósito.
recuerda que, por defecto, la parte de cliente de emulación PDO sentencias preparadas. Al usar comandos preparados, hay una ida y vuelta adicional al servidor para preparar la declaración, por lo que el tiempo total de ejecución de la consulta puede ser realmente mayor que al utilizar nativa sentencia preparada para ejecutar una consulta sólo una vez.
como se mencionó anteriormente, puede utilizar la función mysqli_real_escape_string parámetros dinámicos de nombre como lo haría cuando se utiliza la extensión original de MySQL. Es cómo emular la manera consultas preparadas se hace con DOP, ya que no tienes que realizar un ida y vuelta adicional al servidor para preparar la declaración.
5-comparación entre PDO y términos de uso de MySQLi
mientras la MySQLi tiene sus ventajas al acceder a las capacidades del servidor MySQL, el PDO a veces tienen una ventaja y puede ser un mejor apto para el usuario, dependiendo de preferencias personales y la comodidad. Como la mayoría de las cosas, la opción que funciona mejor depende quien le pregunte y qué situación necesita MySQLi o DOP.
la MySQLi solo funciona con bases de datos MySQL, mientras que el D.O. es flexible y capaz de trabajar con múltiples sistemas de bases de datos, incluyendo IBM, Oracle y MySQL. Si tienes que cambiar la base de datos o proporcionar una solución independiente de la base de datos, uso el MySQLi directamente no es la mejor opción. Todavía puede utilizar la MySQLi en soluciones independientes de la base de datos mediante una capa de abstracción.
los parámetros de conexión con la MySQLi no son tan fácil o flexible el DOP. La MySQLi utiliza un sistema de parámetros numerados y no admite parámetros con nombre como denominación de origen protegida. La MySQLi tiene buen soporte y mantenimiento, haciendo la transición al nuevo sistema de seguro.
, usted será capaz de utilizar nuevas funciones disponibles en las últimas versiones de servidores MySQL. Esta es una de las mayores ventajas de MySQLi. PDO no tenga amplio apoyo para aprovechar al máximo de las últimas características de MySQL.
el proceso de instalación de MySQLi no sólo es fácil, pero es automático cuando la extensión PHP 5 MySQL que viene incorporado en Windows o Linux distribuciones.
conversión de 6 aplicaciones de MySQL MySQLi o DOP
Si usted tiene un proyecto utilizando la antigua extensión de MySQL y necesita convertir para utilizar MySQLi o DOP, puede tomar un tiempo para volver a escribir si no estaba usando una capa de abstracción de base de datos.
Si usted necesita una solución rápida y fácil que no requiere el cambio de gran parte de su código, puede probar el paquete PDO o MySQLi para usar cada una de estas extensiones a través de las funciones de envoltura de MySQL que mysql _ * funciones utilizando PDO por Aziz s. Hussain o MySQL PHP a MysqlLeído por Dave Smith a las funciones de extensión PDO y MySQLi, respectivamente.
que le permitirá hacer su código en PHP 7 mientras que haciendo una migración real de código que no requiere un contenedor.
Dave Smith también escribió un texto sobre cómo migrar código de mysql mysqli Considerando que las diferencias entre estas extensiones.
7-recomendaciones para el uso con MySQLi y DOP
hay muchos paquetes que se pueden utilizar para varios propósitos a MySQL usando MySQLi o DOP.
a continuación se muestran algunos de los últimos paquetes de PHP que proporcionan contenedores seguros y eficientes para los varios propósitos de la DOP.
PDO Backup y sincronización de base de datos
PHP Multi MySQLDump (Alessandro Quintiliani)
descarga de MySQL para descargar archivos de las tablas base de datos.
Backup de PHP en el servidor WebDav (Dmitry Mamontov)
copia de seguridad de archivos y una base de datos a un servidor WebDav.
tablas de sincronizar bases de datos PHP (Ettore Moretti)
sincronizar tablas entre dos bases de datos con PDO.
clase Backup DB (Raul)
genera una copia de seguridad de base de datos de MySQL usando el DOP.
PHP base de datos de sincronización (Jacob Fogg)
sincronizar tablas de diferentes bases de datos con PDO.
copia de seguridad de base de datos de MySQLi
MySQL Backup Danene (Gerry Danene)
declaraciones SQL crea la base de datos de copia de seguridad usando MySQLi.
oh MySQLi (Atabak Hosein Nia)
ejecutar consultas MySQL común utilizando la MySQLi.
DBMysqli (Osama Salama)
accesos MySQL bases de datos mysql y mysqli.
seguridad y autenticación DOP
PHP seguro generador (Aleksandar Zivanovic)
crea y valida el token almacenado en la tabla de MySQL.
PHP Login de OTP (Bijaya Kumar Baker)
autentica usuarios mediante la dirección MAC de la computadora.
MySQLi seguridad y autenticación
Biblioteca de API de PHP OAuth con cliente de ejemplo de Tutorial para cualquier OAuth1 y el servidor que usan OAuth2 (Manuel Lemos)
Authorizes y tiene acceso a las API mediante OAuth.
registro de usuarios y login DOP
asegurar PHP sistema de Login (Subin Siby)
usuarios registro y login utilizando una base de datos a través de la DOP.
clase Auth de PHP (Con vertor)
registro y login de usuarios almacenados en una base de datos.
PHP Secure Login y registro (Ashraf Gheith)
usuarios de los registros y logs en una base de datos con PDO.
base de datos access y abstracción PDO
múltiples PHP PDOStatement instancia iteradores (Matthew Daniel)
itera sobre varios resultados de la consulta usando DOP.
PHP PDO OCI (Eustaquio Rangel de Oliveira)
bases de datos Oracle de acceso utilizando un contenedor para la clase PDO.
DB modelo abstracto (Guillermo Murillo)
ejecuta MySQL consultas llamando a procedimientos almacenados.
MySQLi y bases de datos acceso abstracción
la Metabase (Manuel Lemos)
independientemente de la base de datos de capa de DBMS abtração php.
servidor PHP CRUD API resto (Bharat Parmar)
server API REST con las operaciones CRUD en MySQLi.
(extended MySQLi)
envoltura para acceder a la base de datos de MySQL usando MySQLi.
PDO ORM (Object-Relational Mapping)
pequeño PHP Framework de ORM (Victor Bolshov)
mapas de objetos a bases de datos mediante consultas compuestas.
caribú ORM (Maik Greubel)
mapas objetos a registros de base de datos con notas.
Papa ORM (Adeniyi Ibraheem)
tiendas y recupera objetos de bases de datos usando el ORM.
torm (Eustaquio Rangel)
tiendas y recupera objetos mediante ActiveRecord.
SlimDb (Marcelo Entraigas)
accede a diferentes tipos de base de datos con PDO.
MySQLi ORM (Mapeo objeto-relacional) (?)
DB acelerador (Yazan Tommalieh)
registros de tabla MySQL de mapas a los objetos usando MySQLi.
8-¿Qué llevar en un nuevo proyecto: MySQLi o PDO?
aunque la denominación de origen protegida puede ser un poco más lento y no aprovechar al máximo las capacidades del servidor MySQL, podría ser más sencillo que escribir menos código dependiente en el Banco a tener un código más legible mediante parámetros a las consultas preparadas con nombre. Por lo tanto, cualquier opción puede ser bueno dependiendo de lo que usted valora.
este artículo intentó dar algunos criterios que usted debe considerar al momento de decidir que es mejor para usted.
***
Haseeb Ahmad Basilio es parte del equipo de columnistas internacionales de Neowin. La traducción del artículo es hecha por Neowin, escrito con la autorización del autor, y pueden seguir el artículo en inglés en el enlace: https://www.phpclasses.org/blog/post/521-mysqli-vs-pdo-vs-mysql.html.
Comments
0 comments
Twitter
RSS