Mettre à jour un champ BLOB en Php PostgreSQL

Les champs BLOB sont parfois utilisés pour stocker dans une base de données de données binaires de grande taille.

On peut par exemple s'en servir pour sauvegarder dans le base de donnée PostgreSQL des images.

Cette méthode bien que peu populaire présente l'avantage de conserver dans un seul et même lieu de stockage l'intégralité des données d'un projet. La backup de base de données embarque donc alors vos images ou autres éléments binaires de votre projet.

Mettre à jour un champ BLOB dans un base PostgreSQL.

Cet exemple montre comment utiliser un champ de type blob en PHP sur une base avec PostgreSQL :


//----- ouverture de la connexion à la base de données
$conn=pg_Connect("dbname=sagres port=5432");
pg_Exec($conn, "BEGIN");
 
//----- Création du blob 
$oid=pg_locreate($conn);
 
//----- ouverture du blob en ecriture 
$handle=pg_loopen($conn, $oid, "w");
 
//----- Chargement d'un fichier dans le blob
pg_lowrite($handle, "/tmp/fichier.gif");
 
//------ fermeture du blob
pg_loclose($handle);
 
//------- ajout du blob à la table 
pg_Exec($conn, "INSERT into employees (id, picture) VALUES ('$id','$oid')");
pg_Exec($conn, "COMMIT");
 
pg_close($conn);

Il est également possible d'importer directement le contenu du fichier dans la base postgres sans avoir à charger le fichier dans le code PHP.

Attention toutefois, cette méthode ne fonctionne que si le serveur postgreSQL a accès au fichier en question (donc idéalement un serveur local)


//----- ouverture de la connexion à la base de données 
$conn=pg_Connect("dbname=sagres port=5432"); 
pg_Exec($conn, "BEGIN");

//----- Création du blob 
$oid = pg_locreate($conn);
$oid = pg_lo_import($conn,$chemin_du_fichier_a_importer);

pg_query($conn, "commit");

 

Par Christophe HIRON
06 décembre 2006