Ir al contenido principal

Entradas

Mostrando entradas de 2018

[Anotaciones] Guardar BLOB de MySQL a imagen con PHP

//script para guardar imagenes desde una base de datos con contenido BLOB

$dbhost = 'localhost';
$dbname = 'nombredelabase';
$dbusername = "usuario";
$dbuserpass = 'contraseña';
$demo1 = mysqli_connect($dbhost, $dbusername, $dbuserpass, 'credencial') or trigger_error(mysql_error(),E_USER_ERROR);

$consulta = mysqli_query($demo1, "SELECT * FROM imagenes");

while ($dato = mysqli_fetch_array($consulta, MYSQLI_ASSOC))
{
$foto = $dato['Foto'];
$id = $dato['idPersona'];

//extrae la foto del blob
$source_img = imagecreatefromstring($foto);
$file = 'imagenes/'. $id . '_foto.jpg';
$imageSave = imagejpeg($source_img, $file, 90);
imagedestroy($source_img);
}

?>

Dejo el enlace de pastebin para el formato:

https://pastebin.com/rSdGPiPG

Nota: La carpeta imagenes debe tener permisos de escritura :P

Saludos

Komtec1

[Anotaciones] Importar DB MySQL con archivos frm/ibd

Primero, vamos a extraer las consultas para crear las tablas, lo podemos hacer con el siguiente comando>

mysqlfrm --server=user:pass@localhost --port 3307 --diagnostic /ruta/de/los/archivos/data/nombredebase/*.frm

Esto nos regresa todos los CREATE que tengamos para las tablas, guardar todo el resultado.

Creamos la base de datos, con el mismo nombre que se tenía anteriormente.

Ejecutamos la consulta que nos regresó el comando mysqlfrm, si nuestra versión de mysql es mayor a 5.6, es importante hacer este cambio:


 ENGINE=InnoDB DEFAULT CHARSET=utf8;

por

 ENGINE=InnoDB ROW_FORMAT=compact CHARSET=utf8;

Es decir, se remplaza DEFAULT por ROW_FORMAT=compact, realmente no se por qué, pero me llevó como una hora dar con el error, espero quien lea esto le sea más facil.

Una vez que tengamos las tablas creadas, ejecutamos lo siguiente:

ALTER TABLE nombredetabla1 DISCARD TABLESPACE;
ALTER TABLE nombredetabla2 DISCARD TABLESPACE;
ALTER TABLE nombredetabla3 DISCARD TABLESPACE;
...
ALTER TABLE nom…