Top Banner
Introducción La extensión mysqli (mysql improved) permite acceder a la funcionalidad proporcionada por MySQL 4.1 y posterior. Se puede encontrar más información sobre el servidor de base de datos MySQL en » http://www.mysql.com/ Se puede encontrar información general del software disponible para usar MySQL desde PHP en la Información general La documentación de MySQL se puede encontrar en » http://dev.mysql.com/doc/ . Esta documentación incluye partes del manual de MySQL con permiso de Oracle Corporation. Ejemplos Todos los ejemplos en la documentación de mysqli utilizan la base de datos world. Ésta se puede encontrar en» http://downloads.mysql.com/docs/world.sql.gz Información general Esta sección proporciona una introducción a las opciones disponibles a la hora de desarrollar una aplicación PHP que necesite interactuar con una base de datos MySQL. ¿Qué es una API? Una Interfaz de Programación de Aplicaciones, o API, define las clases, métodos, funciones y variables que necesitará llamar una aplicación para llevar a cabo una tarea determinada. En el caso de las aplicaciones de PHP que necesitan comunicarse con un servidor de bases de datos, las
216

Manual MySQLi

Nov 10, 2015

Download

Documents

piojo12345

mysqli
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

IntroduccinLa extensinmysqli(mysql improved) permite acceder a la funcionalidad proporcionada por MySQL 4.1 y posterior. Se puede encontrar ms informacin sobre el servidor de base de datos MySQL enhttp://www.mysql.com/Se puede encontrar informacin general del software disponible para usar MySQL desde PHP en laInformacin generalLa documentacin de MySQL se puede encontrar enhttp://dev.mysql.com/doc/.Esta documentacin incluye partes del manual de MySQL con permiso de Oracle Corporation.EjemplosTodos los ejemplos en la documentacin demysqliutilizan la base de datos world. sta se puede encontrar enhttp://downloads.mysql.com/docs/world.sql.gzInformacin generalEsta seccin proporciona una introduccin a las opciones disponibles a la hora de desarrollar una aplicacin PHP que necesite interactuar con una base de datos MySQL.Qu es una API?Una Interfaz de Programacin de Aplicaciones, o API, define las clases, mtodos, funciones y variables que necesitar llamar una aplicacin para llevar a cabo una tarea determinada. En el caso de las aplicaciones de PHP que necesitan comunicarse con un servidor de bases de datos, las APIs necesarias se ofrecen generalmente en forma de extensiones de PHP.Las APIs pueden ser procedimentales u orientadas a objetos. Con una API procedimental invocan funciones para llevar a cabo las tareas, mientras con con una API orientada a objetos se instancian clases, y entonces se invocan a mtodos de los objetos creados. Entre ambas opciones, la segunda es generalmente la va recomendada, puesto que est ms actualizada y conlleva una mejor organizacin de cdigo.Cuando se escriben aplicaciones PHP que necesitan conectar a un servidor MySQL, existen varias opciones disponibles respecto a API. Este documento abarca esas opciones, y ayuda a elegir la mejor solucin para cada aplicacin.Qu es un Conector?En la documentacin de MySQL, el trminoconectorhace referencia al software que permite a una aplicacin conectarse a un servidor de bases de datos MySQL. MySQL proporciona conectores para ciertos lenguajes, entre ellos PHP.Si una aplicacin de PHP necesita comunicarse con un servidor de bases de datos, necesitar escribir el cdigo PHP que realice tareas tales como conectar al servidor de bases de datos, realizar consultas y otras funciones relacionadas con bases de datos. Es necesario tener un software instalado en el sistema que proporcione a la aplicacin en PHP la API, que manejar la comunicacin entre el servidor de bases de datos y la aplicacin, posiblemente empleando en caso necesario otras bibliotecas. A este software generalmente se le conoce como conector, dado que permite a una aplicacinconectarcon un servidor de bases de datos.Qu es un Driver?Un driver es un software diseado para comunicarse con un tipo especfico de servidor de bases de datos. Podra tambin invocar a una biblioteca, como por ejemplo la Biblioteca Cliente de MySQL o el Driver Nativo de MySQL. Estas bibliotecas implementan el protocolo de bajo nivel que se utiliza para comunicarse con el servidor de bases de datos.A modo de ejemplo, la capa de abstraccin de bases de datosObjetos de Datos de PHP (PDO)utilizar alguno de los drivers para bases de datos disponibles. Uno de ellos es el driver PDO MYSQL, que permite comunicarse con un servidor MySQL.A menudo la gente utiliza los trminos conector y driver indistintamente. Esto puede dar lugar a confusin. En la documentacin de MySQL, el trmino "driver" queda reservado para el software que proporciona la parte especfica de una base de datos dentro de un conector.Qu es una Extensin?En la documentacin de PHP aparece otro trmino -extensin. El cdigo fuente de PHP consiste por un lado de un ncleo, y por otro de extensiones opcionales para el ncleo. Las extensiones de PHP relacionadas con MySQL, tales comomysqli, ymysql, estn implementadas utilizando el framework de extensiones de PHP.Tpicamente, una extensin ofrece una API al programador de PHP para permitirle hacer uso de sus utilidades mediante cdigo. Sin embargo, algunas de las extensiones que utilizan el framework de extensiones de PHP no ofrecen ninguna API al programador.La extensin del driver PDO MySQL, por ejemplo, no proporciona ninguna API al programador PHP, pero en su lugar ofrece una interfaz a la capa de PDO que tiene por encima.No deben confundirse los trminos API y extensin, dado que una extensin no debe necesariamente proporcionar una API al programador.Cules son las principales APIs que PHP ofrece para utilizar MySQL?Hay tres APIs principales a la hora de considerar conectar a un servidor de bases de datos MySQL: Extensin MySQL de PHP Extensin mysqli de PHP Objetos de Datos de PHP (PDO)Cada una tiene sus ventajas e inconvenientes. El siguiente apartado trata de dar una breve introduccin a los aspectos clave de cada API.Qu es la Extensin MySQL de PHP?Esta es la extensin original diseada que permite desarrollar aplicaciones PHP que interactan con bases de datos MySQL. La extensinmysqlproporciona una interfaz procedural, y est pensada para usar slo con versiones de MySQL anteriores a la 4.1.3. Si bien esta extensin se puede utilizar con versiones de MySQL 4.1.3 o posteriores, no estarn disponibles todas las nuevas funcionalidades del servidor MySQL.Nota:Si se utiliza una versin de MySQL 4.1.3 o posterior, se recomiendaencarecidamenteutilizar la extensinmysqlien su lugar.El cdigo fuente de la extensinmysqlse encuentra en el directorio de extensiones de PHPext/mysql.Para ms informacin sobre la extensinmysql, reviseMySQL (Original).Qu es la extensin mysqli de PHP?La extensinmysqli, o como a veces se le conoce, la extensin de MySQLmejorada, se desarroll para aprovechar las nuevas funcionalidades encontradas en los sistemas MySQL con versin 4.1.3 o posterior. La extensinmysqliviene incluida en las versiones PHP 5 y posteriores.La extensinmysqlicontiene numerosos beneficios, siendo estas las mejoras principales respecto a la extensinmysql: Interfaz orientada a objetos Soporte para Declaraciones Preparadas Soporte para Mltiples Declaraciones Soporte para Transacciones Mejoradas las opciones de depuracin Soporte para servidor empotradoNota:Si utiliza MySQL versin 4.1.3 o superior, se recomiendaencarecidamenteutilizar esta extensin.Adems de la interfaz orientada a objetos, esta extensin tambin proporciona una interfaz procedural.La extensinmysqliest desarrollada mediante el framework de extensiones de PHP. Su cdigo fuente se ubica en el directorioext/mysqli.Para ms informacin sobre la extensinmysqli, reviseMySQLi.Qu es PDO?Los Objetos de Datos de PHP, o PDO, son una capa de abstraccin de bases de datos especficas para aplicaciones PHP. PDO ofrece una API homognea para las aplicaciones PHP, independientemente del tipo de servidor de bases de datos con el que se vaya a conectar la aplicacin. En teora, si se utiliza la API PDO, se podra cambiar el servidor de bases de datos en uso, por ejemplo de Firebird a MySQL, y slo se necesitaran algunos cambios menores en el cdigo PHP.Otros ejemplos de capas de abstraccin de bases de datos son JDBC para aplicaciones Java o DBI para Perl.A pesar de que PDO tiene sus ventajas, tales como una API limpia, sencilla y portable, su mayor inconveniente es que no permite utilizar todas las funcionalidades avanzadas en la ltima versin del servidor MySQL. Por ejemplo, PDO no permite hacer uso de las Declaraciones Mltiples de MySQL.PDO est desarrollado utilizando el framework de extensiones de PHP. Su cdigo fuente se ubica en el directorioext/pdo.Para ms informacin de PDO, revisePDO.Qu es el driver PDO MYSQL?El driver PDO MYSQL no es una API en s, al menos desde el punto de vista del programador de PHP. En realidad, el driver PDO MYSQL se encuentra una capa por debajo del propio PDO, y ofrece funcionalidades especficas de MySQL. Si bien el programador realiza las llamadas a la API de PDO, PDO utiliza el driver PDO MYSQL para llevara a cabo la comunicacin con el servidor MySQL.El driver PDO MYSQL es uno de los muchos drivers PDO disponibles. Otros de los drivers disponibles son los de los servidores de bases de datos Firebird y PostgreSQL.El driver MYSQL PDO est desarrollado utilizando el framework de extensiones de PHP. Su cdigo fuente est ubicado en el directorioext/pdo_mysql. No ofrece ninguna API al programador PHP.Para ms informacin sobre el driver PDO MYSQL, reviseMySQL (PDO).Qu es el Driver Nativo de MySQL?Tanto la extensinmysql, comomysqli, y el driver PDO MYSQL, utilizan para llevar a cabo las comunicaciones con el servidor de bases de datos MySQL una biblioteca de bajo nivel que genera el protocolo necesario. Hace un tiempo, la nica biblioteca disponible eralibmysqlclient.Sin embargo, la interfaz que ofrecelibmysqlclientno estaba optimizada para comunicarse con aplicaciones PHP, dado quelibmysqlclientse desarroll originalmente teniendo en mente aplicacines hechas en C. Por esta razn, se desarroll el Driver Nativo de MySQL,mysqlnd, como una alternativa alibmysqlclientpara las aplicaciones en PHP.Tanto la extensinmysql, como la extensinmysqliy el driver PDO MySQL, se pueden configurar por separado para utilizar o bienlibmysqlcliento bienmysqlnd. Dado quemysqlndfue desarrollado especficamente para ser utilizado en sistemas PHP, tiene numerosas mejoras en cuanto a uso de memoria y velocidad respecto alibmysqlclient. Se recomienda encarecidamente hacer uso de dichas mejoras.Nota:El Controlador Nativo de MySQL slo puede usarse con servidores de MySQL versiones 4.1.3 y posteriores.El Driver Nativo de MySQL est desarrollado utilizando el framework de extensiones de PHP. El cdigo fuente se ubica enext/mysqlnd. No ofrece ninguna API al programador de PHP.Comparacin de FuncionalidadesLa siguiente tabla compara las funcionalidades de los tres principales mtodos para conectar a MySQL desde PHP:Comparacin de las opciones de la API de MySQL para PHP

Extensin mysqli de PHPPDO (Usando el driver PDO MySQL y el Driver Nativo MySQL)Extensin MySQL de PHP

Versin de PHP en que se introdujo5.05.0Antes de 3.0

Includo con PHP 5.xSSS

Estado de desarrollo de MySQLDesarrollo activoDesarrollo activo, desde PHP 5.3Slo se le mantiene

Recomendado por MySQL para nuevos proyectosS - opcin recomendadaSNo

Soporte para juegos de caracteresSSNo

Soporte para Declaraciones Preparadas en el lado del servidorSSNo

Soporte para Declaraciones Preparadas en el lado del clienteNoSNo

Soporte para Procedimientos AlmacenadosSSNo

Soporte para Declaraciones MltiplesSMayormenteNo

Suporte para todas las funcionalidades de MySQL 4.1+SMayormenteNo

Interfaz dual: procedimental y orientada a objetosLa extensin mysqli ofrece una interfaz dual. Soporta el paradigme de programacin procedimental y el orientado a objetos.Los usuarios que migren desde la extensin mysql antigua pueden preferir la interfaz procedimental. Esta interfaz es similar a la de la extensin antigua de mysql. En la mayora de los casos, los nombres de funciones difieren nicamente por el prefijo. Algunas funciones de mysqli toman como primer argumento un gestor de conexin, mientras que las funciones similares de la antigua interfaz de mysql lo toman como el ltimo argumento opcional.Ejemplo #1 Migracin sencilla desde la antigua extensin mysql