[Résolu] Images stockées dans Blob
Publié : 3 septembre 2020 à 13:23
Bonjour à tous.
Voici mon problème :
Je stocke une image dans un champ blob de ma base Mysql à l'aide de la requête sql ci-dessous
dans le champ nommé image_small
\t
$sql = "INSERT INTO wp3_articles (code_article, image_small)
VALUES ('$_POST[codearticle]',decode('$_POST[imagesmall]', 'base64'))";
Pour afficher mon image sur une page web j'exécute le php suivant :
<?php
$host='localhost';
$user='xxxx';
$pass='';
$base='basededonnee';
$idPhoto0 = $_GET['idPhoto'];
$link = $dbh = new PDO('mysql:host='.$host.';dbname='.$base, $user, $pass)
$sql = "select image_small from wp3_articles where code_article='{$idPhoto0}' " ;
$res = $link->query($sql);\t
$raw = mysql_fetch_row($res, 'image_small');
header('Content-Type: image/jpeg');
echo mysql_real_escape_string($raw);
pg_close($link);
?>
Je n'ai pas de restitution de mon image
J'ai testé équivalent sur une base Postgresql dans un champ bytea avec le php équivallent :
<?php
$idPhoto0 = $_GET['idPhoto'];
$link = pg_connect("xxxxxxxxxxxxxxxx");
$sql = "select image_small from wp3_articles where code_article='{$idPhoto0}' " ;
$res = pg_query($link, $sql);
$raw = pg_fetch_result($res, 'image_small');
header('Content-Type: image/jpeg');
echo pg_unescape_bytea($raw);
pg_close($link);
?>
ça marche sans problème.
La différence de stockage est tous 2 binaires
Postgresql : byte[] Mysql : Blob
La lecture des données hex dans les champs postgresql et mysql sont différents
Avez vous une explication de cette différence ?
Avez-vous une suggestion à me faire pour m'aider à résoudre ce problème ?
Merci d'avance
Cordialement
Philippe
Voici mon problème :
Je stocke une image dans un champ blob de ma base Mysql à l'aide de la requête sql ci-dessous
dans le champ nommé image_small
\t
$sql = "INSERT INTO wp3_articles (code_article, image_small)
VALUES ('$_POST[codearticle]',decode('$_POST[imagesmall]', 'base64'))";
Pour afficher mon image sur une page web j'exécute le php suivant :
<?php
$host='localhost';
$user='xxxx';
$pass='';
$base='basededonnee';
$idPhoto0 = $_GET['idPhoto'];
$link = $dbh = new PDO('mysql:host='.$host.';dbname='.$base, $user, $pass)
$sql = "select image_small from wp3_articles where code_article='{$idPhoto0}' " ;
$res = $link->query($sql);\t
$raw = mysql_fetch_row($res, 'image_small');
header('Content-Type: image/jpeg');
echo mysql_real_escape_string($raw);
pg_close($link);
?>
Je n'ai pas de restitution de mon image
J'ai testé équivalent sur une base Postgresql dans un champ bytea avec le php équivallent :
<?php
$idPhoto0 = $_GET['idPhoto'];
$link = pg_connect("xxxxxxxxxxxxxxxx");
$sql = "select image_small from wp3_articles where code_article='{$idPhoto0}' " ;
$res = pg_query($link, $sql);
$raw = pg_fetch_result($res, 'image_small');
header('Content-Type: image/jpeg');
echo pg_unescape_bytea($raw);
pg_close($link);
?>
ça marche sans problème.
La différence de stockage est tous 2 binaires
Postgresql : byte[] Mysql : Blob
La lecture des données hex dans les champs postgresql et mysql sont différents
Avez vous une explication de cette différence ?
Avez-vous une suggestion à me faire pour m'aider à résoudre ce problème ?
Merci d'avance
Cordialement
Philippe