PHP: Récupérer l'image de MySQL en utilisant PDO
Je suis refactoring quelques vieux code, y compris la réécriture de base des requêtes mysql d'utiliser PDO.
Le suivant qui fonctionne à merveille dans tous les navigateurs et pour tous les types d'image:
$query = 'SELECT image FROM image WHERE imageid=' . $image_id;
$result = mysql_query($query, $db_conn); querycheck($result);
header("Content-type: image");
echo mysql_result($result, 0);
Malheureusement, cependant, je le réécrire en utilisant PDO, ça ne fonctionne pas. J'ai été par le biais de l'ensemble de l'AOP de la documentation et de la recherche web standard, mais aucun des conseils et des solutions de travail.
Comment peut-on récupérer facilement et l'image de MySQL en utilisant PDO et l'afficher?
Edit 1:
Matthieu Ratzloff donne ce que devrait être la réponse la plus évidente, mais il ne fonctionne pas.
Voici le code que j'ai test en utilisant PDO (et j'ai essayé de nombreuses variantes/paramètres):
$connectstring_temp = 'mysql:host=' . $A . ';dbname=' .$B;
$dbh_temp = new PDO($connectstring_temp, $login, $password);
#$dbh_temp->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
#$dbh_temp->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);
$sql = "SELECT image FROM image WHERE imageid=" . $image_id;
$query = $dbh_temp->prepare($sql);
$query->execute();
$query->bindColumn(1, $image, PDO::PARAM_LOB);
$query->fetch(PDO::FETCH_BOUND);
header("Content-Type: image");
echo $image;
J'ai gardé la même syntaxe, bien que pour la version finale du code $image_id doit être passé en paramètre. Le code ci-dessus ne fonctionne PAS. AOP fonctionne très bien pour toutes les autres requêtes de tous les types.
Votre réécrit-pour-AOP code serait probablement plus utile.
J'ai posté la réponse qui je l'ai testé il fonctionne alors u va juste modifier
OriginalL'auteur Svein Tjønndal | 2011-05-14
Vous devez vous connecter pour publier un commentaire.
Vous devez paramaterize imageid valeur et lier le paramètre de
PDO::PARAM_LOB
:Bien sûr, vous devez aussi spécifier le compléter, corriger, type de contenu (par exemple, l'image/png).
Ne fait jamais de mal d'être explicite. 🙂
Cela fonctionne maintenant. Je ne peux que supposer que c'était un problème de version antérieure de PHP/PDO. Souhaite que je pourrais upvote.
OriginalL'auteur Matthew Ratzloff
Mon approche personnelle à l'Image de Gouttes est à l'aide d'un fichier php pour servir de l'image, en combinaison avec un argument... C'est efficace à 100% et il ne comporte pas de création de fichier... Par exemple, le fichier de servir de l'image de la goutte serait:
image.php:
Cela peut être appelée à partir de vous script principal... Par exemple:
OriginalL'auteur Ruby Racer
Vous pouvez utiliser ce code pour obtenir une image à partir de la base de données en utilisant PDO:
type - data type(column name)
comme l'image/png ou image/gifimage - image data(column name)
stockée dans le tableau comme MÉTIER$this->dbh
gestionnaire de connexionIl fonctionne pour moi, mais maintenant j'ai besoin de savoir comment l'utiliser avec JS parce que le résultat de cette fonction est passée à du code JavaScript - ajax
OriginalL'auteur Marek Bar
Ce code affiche toutes les images dans la dabase de sorte que vous pouvez le changer et lui faire faire ce que vous voulez qu'il fasse
getMessage();
}
?>
drôle de réponse à une question aussi ancienne avec la grâce de quelqu'un d'autre...
...sans oublier qu'il ne répond pas à la question à tous
Pas pertinente pour la question.
OriginalL'auteur Humphrey