Cómo almacenar archivos en una base de datos MySQL

Cómo almacenar archivos en una base de datos MySQL

Cómo hacer para...
Un clásico problema de una aplicación web es el almacenamiento de archivos subidos por los usuarios (Sus fotos por ejemplo). Si bien teóricamente se puede realizar sin mayores inconvenientes (Al fin y al cabo, un archivo digital no es más que una colección de datos binarios), es sumamente ineficiente hacerlo. Veamos cómo sería esto: Primero que nada, habría que manejar de alguna forma el upload de archivos, pero, asumiendo que el archivo ya está disponible para php se podría pensar en almacenarlo dentro de la base de datos utilizando algún campo tipo BLOB. Un problema inmediato que surge de tomar esta opción es que la base de datos crecerá mucho si el sistema es muy utilizado, lo cual impactará negativamente en su rendimiento, hará más costozos los backups, etc... Una…
Leer más
Cómo ejecutar stored procedures de MySQL usando PHP

Cómo ejecutar stored procedures de MySQL usando PHP

Cómo hacer para...
Un procedimiento almacenado es una herramienta que permite almacenar código ejecutable directamente en la base de datos. Personalmente no lo considero una práctica muy recomendable por varias razones: La idea de tener lógica de negocio fuera del código de mi aplicación me da cierta desconfianza (No me gusta no poder entender todo lo que está pasando en mi aplicación sólo con ver su código). Llegado el caso de tener que migrar de motor de base de datos el tener procedimientos almacenados puede convertirse en un problema Aún así, entiendo que puede haber situaciones en las que sea conveniente recurrir a ellos... especialmente cuando se trata de operaciones suamente complejas/pesadas o que tienen que ver estrictamente con el mantenimiento de la base de datos. ¿Cómo se llaman desde PHP? http://php.net/manual/es/mysqli.quickstart.stored-procedures.php http://www.mysqltutorial.org/php-calling-mysql-stored-procedures/
Leer más
Cómo acceder a Google Drive usando PHP

Cómo acceder a Google Drive usando PHP

Cómo hacer para...
El escenario que voy a analizar es este: Una aplicación desarrollada en PHP requiere acceder a archivos que sus usuarios tienen almacenados en sus propios documentos almacenados en Google Drive. Los pasos son los siguientes: 1. Crear un proyecto en Google (yendo a https://console.developers.google.com/apis/credentials): 2. Habilitar el acceso a la API via OAuth (https://console.developers.google.com/apis/api/drive/overview?project=MI_PROYECTO): 3. Crear las credenciales de acceso vía OAuth: Seleccionar OAuth: 4. Descargar las credenciales a un lugar seguro: 5. Autorizar la URI de redireccionamiento Con esto hecho ya tenés lo básico para empezar a programar. Se puede hacer todo en un solo archivo (aunque no es muy recomendable) o se puede tener un archivo para cada paso del trabajo. Te muestro un ejemplo de lo segundo. Ante todo, vas a necesitar la librería google/apiclient (Te recomiendo incorporarla con composer), acá podés…
Leer más
Cómo borrar archivos usando php

Cómo borrar archivos usando php

Cómo hacer para...
Leyendo en algún foro he visto algo que me sorprendió mucho. Alguien estaba intentando borrar un archivo desde PHP usando este comando: exec("rm ".$directorio.$imagen); En general, no soy muy amigo de la función exec... demasiados riesgos de seguridad... pero particularmente, en este caso, este código sólo podrá ejecutar en un entorno que contenga el comando "rm" (Linux o similar). Lo llamativo es que PHP cuenta con una función específicamente diseñada a tal fin (unlink), con lo cual, el código escrito de esta forma será más portable (léase: menos dolores de cabeza). Una de las maravillosas (y muchas veces odiadas) características de php es que tiene una cantidad enorme de funciones, o sea, antes de escribir código tuyo, preguntate si no habrá alguna función que lo haga... casi seguramente la respuesta…
Leer más
Cómo pasar un sistema de Xampp a un Hosting Web

Cómo pasar un sistema de Xampp a un Hosting Web

Cómo hacer para...
Una práctica muy común entre los desarrolladores de PHP (Especialmente los que recién arrancan), es instalar en sus propias computadoras un paquete como XAMPP. Si bien considero mejor instalar todo el entorno de trabajo de un proyecto en su propia máquina virtual, esta alternativa no está mal para comenzar. El problema viene cuando llega el gran día: la salida en vivo. Lo primero que necesitarás hacer es subir todo tu código (vía FTP probablemente) al hosting que hayas contratado. Luego necesitarás crear la base de datos (asumo que será un MySQL) tal como está en tu XAMPP (puedes hacer un dump de lo que tienes actualmente y levantarlo en tu hosting). Una vez que tengas eso hecho deberás seguramente modificar alguna configuración de tu sistema para que apunte correctamente a…
Leer más
Cómo enviar emails con PHP

Cómo enviar emails con PHP

Cómo hacer para...
Es muy común la necesidad de emails desde PHP, tanto si se trata de un script de CLI (como puede ser un cronjob) o de una aplicación web. Existen varias opciones a la hora de conseguirlo: La más simple es el uso de la función mail. Es una función de bastante bajo nivel (es decir, algo tosca), pero está disponible en casi cualquier instalación de php. Esta opción está bien para escenarios de envíos de mail simples, pero para usos más avanzados (como enviar adjuntos, HTML o similares), es conveniente utilizar alguna otra opción algo más robusta. Algunas alternativas interesantes son: PHPMailer SwiftMailer ZendMail Cualquiera de estas alternativas resultará más adecuada que el uso de la simple función mail en contextos en los que la performance es una preocupación (Por ejemplo, cuando…
Leer más
Cómo se usan las funciones anónimas en PHP

Cómo se usan las funciones anónimas en PHP

Cómo hacer para...
Las funciones anónimas son, como te habrás imaginado, funciones que no tienen un nombre. Esto puede sonar bastante raro, siendo que seguramente cuando aprendiste qué es y cómo se define una función en PHP te dijeron que era algo con la pinta: function f( $param1, $param2 ) { // Algo de código } Pues te mintieron. Bueno, no, en realidad no te mintieron pero te dieron una versión parcial de la verdad. Lo que quiero decir es que generalmente las cosas son así como las conoces, pero existen otras posibilidades. Te presento la función anónima: $f = function( $param1, $param2 ) { return $param1 + $param2; } En este ejemplo estoy asignando a la variable $f la función que estoy definiendo (¡No el resultado de su evaluación! No te confundas). Y…
Leer más
Cómo se usan los callbacks en PHP

Cómo se usan los callbacks en PHP

Cómo hacer para...
[caption id="attachment_651" align="aligncenter" width="640"] Hand holding phone coming out from laptop. Contact us flat illustration. Eps8[/caption] Este es uno de mis temas preferidos cuando a PHP se refiere. Debo confesar que lo descubrí bastante tarde, pero fue prácticamente amor a primera vista. Veamos un ejemplo: Si tengo un array con números ( [ 1, 2, 3, 4, 5 ] ) y quiero obtener sólo los números pares, la forma normal de hacerlo sería algo como: $pares = []; foreach ( $numeros as $numero ) {    if ( $numero % 2 == 0 ) {        $pares[] = $numero;    } } Levantemos un poco el nivel de abstracción: function esPar( $numero ) { return $numero % 2 == 0; } $pares = []; foreach ( $numeros as $numero…
Leer más
Cómo interactuar con Excel desde PHP

Cómo interactuar con Excel desde PHP

Cómo hacer para...
Un problema bastante común en el desarrollo de aplicaciones para empresas es la interacción con Excel (Levantar datos, generar planillas, etc...). Un modo sencillo de evadir el problema (y que muchas veces funciona), es exportar la información hacia archivos de texto separados por comas (Los famosos CSV) y luego tratarlos desde PHP con funciones como fgetcsv. Obviamente, esto servirá si se trata de una aplicación que sólo requiere leer datos... ¿Qué pasa si necesitamos generarlos? (O si la estructura de la planilla en cuestión es algo más compleja). Como en la mayoría de los casos, existen diversas opciones de solución. Una particularmente buena es la librería PHPExcel. Aquí un ejemplo de uso (Extracto de un proyecto que desarrollamos para un cliente de Leeway): $objPHPExcel = new PHPExcel(); // Se crea la instancia…
Leer más
Cuál es la diferencia entre isset() y empty()

Cuál es la diferencia entre isset() y empty()

Cómo hacer para...
Empiezo por las formalidades: Ambas son funciones del lenguaje. isset informa si un identificador (el nombre de una variable) está definido o no. empty indica si el valor asociado a un identificador es o no vacío. Veamos algunos ejemplos para aclarar el punto: $a = 0; if (empty($a)) { echo 'empty'.PHP_EOL; } if (isset($a)) { echo 'isset'.PHP_EOL; } Este código dará como salida: empty isset Si se lo ejecuta desde la línea de comandos. Este otro if (isset($a)) { echo 'isset'.PHP_EOL; } $a = 0; if (empty($a)) { echo 'empty'.PHP_EOL; } Mostrará en cambio: empty Ya que la variable $a recién se define después de la primera verificación. Es interesante ver el siguiente ejemplo: if (isset($a)) { echo 'isset'.PHP_EOL; } if (empty($a)) { echo 'empty'.PHP_EOL; } Que también dará como…
Leer más