¿Cuál es la diferencia entre PDO y MySQLi?

¿Cuál es la diferencia entre PDO y MySQLi?

Conceptos
Si me decís que estás desarrollando una aplicación web usando PHP y no me das más datos, cerrando los ojos diría que estás usando una base de datos MySQL y, seguro que en el 80% de los casos acertaría. Es un hecho: PHP y MySQL son un dúo muy común en este mundillo. Lo que no está tan definido es cuál es el mejor modo de conectarse a MySQL utilizando PHP. A priori destacan dos: MySQLiPDO Ambos pueden usarse para armar CRUDs, reportes y cualquier otra necesidad que implique comunicar una aplicación PHP con una base de datos MySQL. Entonces... ¿cómo elegir? Para hacerte (algo) más fácil la tarea te voy a comentar brevemente de qué se trata cada uno. Qué es MySQLi MySQLi es una extensión de PHP creada…
Leer más
¿Qué son las extensiones de PHP?

¿Qué son las extensiones de PHP?

Conceptos
Quién no se cruzó con mensajes como: Debes tener instalada/habilitada la extension en PHP sobre GD Pero... ¿qué es exactamente una extensión de PHP? Para comprenderlo debes conocer un poco cómo funciona PHP internamente. A continuación te daré una visión algo simplificada, si quieres una explicación completa y detallada te recomiendo este excelente tutorial de Diego Lázaro. PHP es un lenguaje interpretado, lo que significa que para ejecutar una aplicación escrita en PHP se requiere de un proceso auxiliar llamado intérprete (Si usas Windows ese proceso será php.exe, si usas Linux o similares será el binario php). Este binario se ha generado a partir de la compilación de una base de código C, la cual, como es abierta, cualquiera con los conocimientos necesarios puede leer y alterar a su antojo.…
Leer más
¿Qué tan «globales» son las variables globales en PHP?

¿Qué tan «globales» son las variables globales en PHP?

Conceptos
Parece una pregunta rara, ¿no? Seguro estás pensando "¿Dónde está la trampa?", ¿cierto? En general se entiende que una variable global es aquella que está presente (es decir, puede ser leída y modificada) en cualquier lugar de un programa. El caso de PHP es algo particular. Para comenzar si hicieras algo como esto: <?php $global = 'Soy una variable global'; function f() { echo '$global dentro de f vale: "'.$global.'"'.PHP_EOL; } echo '$global fuera de f vale: "'.$global.'"'.PHP_EOL; f(); Esperarías ver: $global fuera de f vale: "Soy una variable global" $global dentro de f vale: "Soy una variable global" Y sin embargo, si ejecutás este script verás: $global fuera de f vale: "Soy una variable global" $global dentro de f vale: "" Y, en el reporte de errores encontrarás: PHP…
Leer más
¿Qué puede guardarse en las sesiones PHP?

¿Qué puede guardarse en las sesiones PHP?

Conceptos
Es un hecho: las sesiones de PHP son una fuente de confusión y frustración para muchos desarrolladores. Desde mi punto de vista, el problema es que hay muchos puntos de fallo posible. En este artículo quiero detenerme sobre un punto que, si bien parece simple, tiene sus grises. Todo el mundo pre-supone que las sesiones son una suerte de baúl mágico donde puede guardarse cualquier cosa y, cual juego de rol, acompaña al héroe a donde vaya. La realidad no es tan así. Hay algunos objetos que no pueden ser almacenados en las sesiones PHP. Un ejemplo que veo con frecuencia es código similar a este: include("Conexion.php"); $Conexion = Conectar(); --> Donde conectar es una funcion que conecta a mysql $_SESSION['Conex'] = $Conexion; Y luego, al querer levantar el dato…
Leer más
Por qué se pierden las variables de sesión PHP

Por qué se pierden las variables de sesión PHP

Conceptos
Pocas cosas hay más frustrantes que ir a buscar algo donde sabés que lo dejaste y no encontrar nada. ¿Cómo es posible? Pusiste el session_start() al comienzo como Dios manda. El código es claro: $_SESSION['user'] = $user; ¿Qué puede ser más simple? Cuando hacés un echo $_SESSION['user'] en la misma página todo sale perfecto pero apenas clickeás en un link... nada por aquí, nada por allá. Y lo peor de todo es que el código funciona perfectamente en tu XAMPP pero en tu hosting no. ¿Cómo puede ser? Funcionó perfectamente bien durante meses y ahora, nadie sabe por qué, dejó de funcionar. Obviamente, dejar el problema sin resolver no es opción... ¿qué clase de sitio no recuerda al usuario que está logeado? No te preocupes, el manejo de sesiones en…
Leer más
Cómo funcionan las sesiones en PHP

Cómo funcionan las sesiones en PHP

Conceptos
Una fuente de mucha frustración y confusión para quienes arrancan con PHP es el manejo de sesiones. Hay muchas partes móviles y, a veces, tener todo esto en la cabeza marea... En este artículo intentaré hacer un repaso por cuáles son esas partes y cómo interactúan entre sí de modo que no te queden dudas respecto de cómo usar esta poderosa herramienta. Para qué sirven las sesiones Por supuesto que no puedo avanzar sin antes hablar de lo más importante: ¿para qué sirven las sesiones? O, dicho de otro modo: ¿por qué querrías complicarte la vida entendiendo todo esto? En pocas palabras: las sesiones sirven para compartir información no entre una página y otra (Un formulario HTML y el php que lo procesa por ejemplo), si no entre todas las…
Leer más
Detalles del protocolo HTTP que todo desarrollador PHP debe conocer

Detalles del protocolo HTTP que todo desarrollador PHP debe conocer

Conceptos
Algo que siempre me llamó la atención es cómo en los cursos de PHP (o de programación web en general para el caso), suele pasarse por alto hablar de HTTP. Es cierto que esto puede sonar demasiado teórico y, lo admito, aburrido, sin embargo, es un conocimiento que va a aclararte muchas cosas. Un claro ejemplo de esto es cuando te encontrás con un error como este: PHP Warning: session_start(): Cannot start session when headers already sent Cuando tu código dice algo como: Hola! <?php session_start(); O también: PHP Warning: Cannot modify header information - headers already sent Al entrar a una página con un código como: Hola! <?php setcookie('MyCookie','MyValue'); O Hola! <?php header('Location: pagina2.php'); Seguramente sabrás (tal vez por experiencia o porque "así es como se hace") que las…
Leer más