Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Como recuperar dados BLOB com PHP e MySQL? Tenho os campos "codigo" e "imagem", a imagem é inserida no banco mysql. Como faço para listar e mostrar esta imagem que está inserida no Mysql?
>
Como ela está codificada ?
Base 64 ?
crie um arquivo: imagem.php
<?php
include 'conexao.php';
$Id = (int)$_GET['cod'];
$sql = "select foto from tblfuncionario where codfuncionario = $Id";
$exe = mysql_query($sql);
header("Content-Type: image/jpg");
echo base64_encode(mysql_result($exe, 0, 'foto'));
?>
Para mostrar, coloque esse código na onde a imagem tem que aparecer.
<img src='imagem.php?cod=1' />
Amigo estes são os campos que tenho: id ext imagem codigo, sendo que a imagem fica locada no Mysql, e "ext" é a extenção do arquivo que pode ser jpg, gif, pdf...
Como ficaria neste caso?
Agradeço desde já amigo
Só você adaptar o Select, eu te mandei um exemplo que eu tenho aqui.
E olha o Header tbm, lá você vai por o EXT.
Tenta ae... se der erro poste o que você fez e o erro.
<?php
$conexao = mysql_connect("localhost","use","senha");
$db = mysql_select_db("meubanco");
$Id = (int)$_GET['codigo'];
$sql = "SELECT * FROM imgguad ORDER BY id";
//$sql = "select imagem from imgguad where codigo = $Id";
$exe = mysql_query($sql);
header("Content-Type: image/jpg");
echo base64_encode(mysql_result($ext, 0, 'imagem'));
?>
Apresentou este erro:
"A imagem "http://111.11.1.11/2.php" contém erros e não pode ser exibida."
Tem uma variável errada na ultima linha.
Para vocÊ ter uma melhor noção, veja o arquivo que uso para inserir as imagens no BD. Valeu e obrigado.
<?php
//Inicia sessao e carrega o usuario
ob_start();
session_start();
if ($_SESSION["auth"] == md5($_SESSION["usuario"]."secreto"))$usuario = strtoupper($_SESSION["usuario"]);
}// endsession();
header("Location: redir.php");
}
$db_host = 'localhost'; // don't forget to change
$db_user = 'user';
$db_pwd = 'senha';
$database = 'banco';
$table = 'tabela';
// use the same name as SQL table
if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Nao e Possivel Conectar ao Banco de Dados! ");
if (!mysql_select_db($database))
die("Nao e Possivel Selecionar o Banco");
function sql_safe($s) $s = stripslashes($s);
return mysql_real_escape_string($s);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') $title = trim(sql_safe($_POST['title']));
if ($title == '')
$title = '(empty title)';
if (isset($_FILES['photo']))
{
@list(, , $imtype, ) = getimagesize($_FILES['photo']['tmp_name']);
if ($imtype == 3)
$ext="png";
elseif ($imtype == 2)
$ext="jpg";
elseif ($imtype == 1)
$ext="gif";
else
$ext="pdf";
//$msg = 'Erro: Tipo desconhecido'.$imtype;
if (!isset($msg))
{
$data = file_get_contents($_FILES['photo']['tmp_name']);
$data = mysql_real_escape_string($data);
mysql_query("INSERT INTO {$table}
SET ext='$ext', title='$title',
imagem='$data' , codigo='$codigo',
usuario='$usuario' ");
$msg = 'Imagem Carregada com Sucesso';
}
}
elseif (isset($_GET['title']))
$msg = 'Erro: Arquivo nao Carregado';
}
?>
<html>
<head><title>Cadastro de Imagens</title>
<link href="face2.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="white" class="corpo1">
<div id="logo"></div>
<style type="text/css">
<!--
input {
background-color: "white";
font: 14px arial;
color: black;
border:1px solid gray;
}
-->
</style>
<style type="text/css">
<!--
select {
background-color: white;
font:14px arial;
color: black;
border:2px solid gray;
}
-->
</style>
<?php
if (isset($msg))
{
?>
<p style="font-weight: bold;"><?=$msg?>
<br>
<a href="<?=$PHP_SELF?>" class="corpo1">Recarregar Pفgina</a>
</p>
<?php
}
?>
<label><center spry:hover="capit1">
<p>CADASTRO DE IMAGENS</p>
</center>
</label>
<br>
<br><br>
<table border="0" BGCOLOR="transparent" align="left" cellpadding="0" cellspacing="20">
<tr>
<td><b class="capit1"><span class="capit1">BOLSOS</span></b></td>
<td><b class="capit1"><span class="capit1">SEGUIMENTO</span></b></td>
<td><b class="capit1"><span class="capit1">TIPO</span></b></td>
</tr>
<form method="post" action="teste.php">
<tr>
<td>
<select name="bolso" class="formulario">
<option selected="selected"><?php echo $bolso ?>
<option>Faca - F
<option>Relogio - R
<option>Cargo - C
<option>Carpinteiro - O
</select>
</td>
<td>
<select name="seg" class="formulario">
<option selected="selected"><?php echo $seg ?>
<option>Masculino Adulto - MA
<option>Feminino Adulto - FA
</select>
</td>
<td>
<select name="tipo" class="formulario">
<option selected="selected"><?php echo $tipo ?>
<option>Curvo - CV
<option>Reto - RT
<option>Inclinado - IN
</select>
</td>
</tr>
<tr align="center">
<td colspan="3" align="left"><input name="Submit" type="submit" class="bot" value=" GERAR CÓDIGO ">
</td>
</tr>
</form>
</table>
<p><br>
<br><br><br><br><br><br>
</p>
<p><br>
<BR>
</p>
<hr align="left" size="2" color="#999966">
<br>
<table border="0" BGCOLOR="transparent" align="left" cellpadding="0" cellspacing="20">
<tr>
<td align="center">
<label for="usuario" class="corpo1" >USUءRIO</label>
</td>
<td>
<input type="text" class="formulario" name="usuario" id="usuario" size="30" value="<?php echo
$usuario ?>" />
</td>
<form action="<?=$PHP_SELF?>" method="POST" enctype="multipart/form-data">
<td align="left">
<label for="codigo" class="corpo1">CسDIGO</label>
</td>
<td colspan="2">
<input name="codigo" type="text" class="formulario"
value="<?php echo $letrafinal = substr($bolso, -1).$letrafinal = substr($seg, -2).$letrafinal = substr($tipo,-2) ?>" size="5" />
</td>
</tr>
<tr>
<td align="left" class="corpo1">
<label for="title">TÍTULO</label>
</td>
<td colspan="2">
<input name="title" type="text" class="formulario" id="title" size="60" />
</td>
</tr>
<tr>
<td align="left" class="corpo1">
<label for="photo">ARQUIVO</label>
</td>
<td colspan="2">
<input name="photo" type="file" class="bot" id="photo" size="30" />
</td>
</tr>
<tr>
<td colspan="3" align="left">
<input type="submit" class="bot" value=" GRAVAR "/>
</td>
</tr>
</table>
</form>
</body>
</html>Ao invés de usar isso:
$data = mysql_real_escape_string($data)
Use:
$data = base64_encode(addslashes($data));
E na hora de mostrar assim:
echo base64_decode(stripslashes(mysql_result($ext, 0, 'imagem')));
Nada amigo, axo que estou fazendo algo de forma errado aqui, logo sou pricinpiante.
ABaixo o arquivo que era para exibir as imagens.
Veja ae como está. Como ele deve ficar?
<?php
//Inicia sessao e carrega o usuario
ob_start();
session_start();
if ($_SESSION["auth"] == md5($_SESSION["usuario"]."secreto"))$usuario = strtoupper($_SESSION["usuario"]);
}// endsession();
header("Location: redir.php");
}
$conexao = mysql_connect("localhost","root","root");
$db = mysql_select_db("meubanco");
$sql = "SELECT * FROM tabela ORDER BY id";
$res = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");
while($linha = mysql_fetch_array($res)) {
$id = $linha["id"];
$ext = $linha["ext"];
$usuario = $linha["usuario"];
$codigo = $linha["codigo"];
$sequencia = $linha["sequencia"];
$imagem = $linha["imagem"];
echo $imagem . "jpg";
echo $usuario;
echo "<br>";
echo base64_decode(stripslashes(mysql_result($ext, 0, 'imagem')));
}
?>Primeiro, nao tem como você mostrar um monte de imagens de uma vez.
Veja no exemplo que postei:
<?php
include 'conexao.php';
$Id = (int)$_GET['cod'];
$sql = "select foto from tblfuncionario where codfuncionario = $Id";
$exe = mysql_query($sql);
header("Content-Type: image/jpg");
echo base64_encode(stripslashes((mysql_result($exe, 0, 'foto')));
?>
É só do campo imagem que você precisa e do campo tipo.
Mais nada.
Altere somente seu select para o campo e tabelas que você vai usar. Nao precisa por a extensao por que você salvou o conteúdo da imagem no banco.
E na hora de mostrar faça:
<img src='imagem.php?id=1' />
Na onde você for mostrar as imagens, você pode fazer um While, para pegar tudo.
Dae no while você faz:
<img src='imagem.php?id=<?php echo $res['id']; ?>' />>
Primeiro, nao tem como você mostrar um monte de imagens de uma vez.
Veja no exemplo que postei:
<?php
include 'conexao.php';
$Id = (int)$_GET['cod'];
$sql = "select foto from tblfuncionario where codfuncionario = $Id";
$exe = mysql_query($sql);
header("Content-Type: image/jpg");
echo base64_encode(stripslashes((mysql_result($exe, 0, 'foto')));
?>
É só do campo imagem que você precisa e do campo tipo.
Mais nada.
Altere somente seu select para o campo e tabelas que você vai usar. Nao precisa por a extensao por que você salvou o conteúdo da imagem no banco.
E na hora de mostrar faça:
<img src='imagem.php?id=1' />
Na onde você for mostrar as imagens, você pode fazer um While, para pegar tudo.
Dae no while você faz:
<img src='imagem.php?id=<?php echo $res['id']; ?>' />
Não conseguir resolver a questão. Tem como você diagramar este script de consulta a imagem? Se não puder tudo bem, de qualquer forma, obrigado pela força amigo.
Nos mostre como você ta inserindo a imagem, e como está mostrando.
SEGUE OS 2 ARQUIVOS, O QUE INSERIR NO BANCO DE DADOS E O QUE SERIA PARA CONSULTAR E MOSTRAR A IMAGEM CADASTRADA NO BANCO DE DADOS.
ARQUIVO QUE INSERI A IMAGEM NO BANCO DE DADOS MYSQL:
<?php
//Inicia sessao e carrega o usuario
ob_start();
session_start();
if ($_SESSION["auth"] == md5($_SESSION["usuario"]."secreto"))$usuario = strtoupper($_SESSION["usuario"]);
}// endsession();
header("Location: redir.php");
}
$db_host = 'localhost'; // don't forget to change
$db_user = 'user';
$db_pwd = 'senha';
$database = 'banco';
$table = 'tabela';
// use the same name as SQL table
if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Nao e Possivel Conectar ao Banco de Dados! ");
if (!mysql_select_db($database))
die("Nao e Possivel Selecionar o Banco");
function sql_safe($s) $s = stripslashes($s);
return mysql_real_escape_string($s);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') $title = trim(sql_safe($_POST['title']));
if ($title == '')
$title = '(empty title)';
if (isset($_FILES['photo']))
{
@list(, , $imtype, ) = getimagesize($_FILES['photo']['tmp_name']);
if ($imtype == 3)
$ext="png";
elseif ($imtype == 2)
$ext="jpg";
elseif ($imtype == 1)
$ext="gif";
else
$ext="pdf";
//$msg = 'Erro: Tipo desconhecido'.$imtype;
if (!isset($msg))
{
$data = file_get_contents($_FILES['photo']['tmp_name']);
$data = mysql_real_escape_string($data);
mysql_query("INSERT INTO {$table}
SET ext='$ext', title='$title',
imagem='$data' , codigo='$codigo',
usuario='$usuario' ");
$msg = 'Imagem Carregada com Sucesso';
}
}
elseif (isset($_GET['title']))
$msg = 'Erro: Arquivo nao Carregado';
}
?>
<html>
<head><title>Cadastro de Imagens</title>
<link href="face2.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="white" class="corpo1">
<div id="logo"></div>
<style type="text/css">
<!--
input {
background-color: "white";
font: 14px arial;
color: black;
border:1px solid gray;
}
-->
</style>
<style type="text/css">
<!--
select {
background-color: white;
font:14px arial;
color: black;
border:2px solid gray;
}
-->
</style>
<?php
if (isset($msg))
{
?>
<p style="font-weight: bold;"><?=$msg?>
<br>
<a href="<?=$PHP_SELF?>" class="corpo1">Recarregar P?gina</a>
</p>
<?php
}
?>
<label><center spry:hover="capit1">
<p>CADASTRO DE IMAGENS</p>
</center>
</label>
<br>
<br><br>
<table border="0" BGCOLOR="transparent" align="left" cellpadding="0" cellspacing="20">
<tr>
<td><b class="capit1"><span class="capit1">BOLSOS</span></b></td>
<td><b class="capit1"><span class="capit1">SEGUIMENTO</span></b></td>
<td><b class="capit1"><span class="capit1">TIPO</span></b></td>
</tr>
<form method="post" action="teste.php">
<tr>
<td>
<select name="bolso" class="formulario">
<option selected="selected"><?php echo $bolso ?>
<option>Faca - F
<option>Relogio - R
<option>Cargo - C
<option>Carpinteiro - O
</select>
</td>
<td>
<select name="seg" class="formulario">
<option selected="selected"><?php echo $seg ?>
<option>Masculino Adulto - MA
<option>Feminino Adulto - FA
</select>
</td>
<td>
<select name="tipo" class="formulario">
<option selected="selected"><?php echo $tipo ?>
<option>Curvo - CV
<option>Reto - RT
<option>Inclinado - IN
</select>
</td>
</tr>
<tr align="center">
<td colspan="3" align="left"><input name="Submit" type="submit" class="bot" value=" GERAR CÓDIGO ">
</td>
</tr>
</form>
</table>
<p><br>
<br><br><br><br><br><br>
</p>
<p><br>
<BR>
</p>
<hr align="left" size="2" color="#999966">
<br>
<table border="0" BGCOLOR="transparent" align="left" cellpadding="0" cellspacing="20">
<tr>
<td align="center">
<label for="usuario" class="corpo1" >USU?RIO</label>
</td>
<td>
<input type="text" class="formulario" name="usuario" id="usuario" size="30" value="<?php echo
$usuario ?>" />
</td>
<form action="<?=$PHP_SELF?>" method="POST" enctype="multipart/form-data">
<td align="left">
<label for="codigo" class="corpo1">C?DIGO</label>
</td>
<td colspan="2">
<input name="codigo" type="text" class="formulario"
value="<?php echo $letrafinal = substr($bolso, -1).$letrafinal = substr($seg, -2).$letrafinal = substr($tipo,-2) ?>" size="5" />
</td>
</tr>
<tr>
<td align="left" class="corpo1">
<label for="title">TÍTULO</label>
</td>
<td colspan="2">
<input name="title" type="text" class="formulario" id="title" size="60" />
</td>
</tr>
<tr>
<td align="left" class="corpo1">
<label for="photo">ARQUIVO</label>
</td>
<td colspan="2">
<input name="photo" type="file" class="bot" id="photo" size="30" />
</td>
</tr>
<tr>
<td colspan="3" align="left">
<input type="submit" class="bot" value=" GRAVAR "/>
</td>
</tr>
</table>
</form>
</body>
</html>
ARQUIVO DE CONSULTA QUE DEVERIA MOSTRAR A IMAGEM CADASTRADA:
<?php
//Inicia sessao e carrega o usuario
ob_start();
session_start();
if ($_SESSION["auth"] == md5($_SESSION["usuario"]."secreto"))$usuario = strtoupper($_SESSION["usuario"]);
}// endsession();
header("Location: redir.php");
}
$conexao = mysql_connect("localhost","root","root");
$db = mysql_select_db("meubanco");
$sql = "SELECT * FROM tabela ORDER BY id";
$res = mysql_query($sql)
or die ("Nãƒo foi possível realizar a consulta ao banco de dados");
while($linha = mysql_fetch_array($res)) {
$id = $linha["id"];
$ext = $linha["ext"];
$usuario = $linha["usuario"];
$codigo = $linha["codigo"];
$sequencia = $linha["sequencia"];
$imagem = $linha["imagem"];
echo $imagem . "jpg";
echo $usuario;
echo "<br>";
echo base64_decode(stripslashes(mysql_result($ext, 0, 'imagem')));
}
?>
GRATO
você nao fez NENHUMA alteração recomendada.
Faça de novo... leia todos os POSTS.
AFF ¬¬
O tipo blob grava um arquivo binário no banco, como o nome diz; Binary Large Object, sendo assim
você tem que "recodificar" os bits para poder exibir as imagens.
Tenta fazer como o Justin Bieber disse, use a função base64_encode().
Não deixe ele mais nervoso senão ele vai começar a cantar.
baby baby ohh foi banido ? rss
Como ela está codificada ?
Base 64 ?
crie um arquivo: imagem.php
Para mostrar, coloque esse código na onde a imagem tem que aparecer.
<img src='imagem.php?cod=1' />