phpbar.de logo

Mailinglisten-Archive

[php] BLOBs mit pgsql unter php

[php] BLOBs mit pgsql unter php

Cornelia Boenigk php_(at)_phpcenter.de
Tue, 19 Feb 2002 11:43:55 +0100


Hi Enrico

> ist es generell noetig, vorher eine transaktion zu starten ?
> (vielleicht ist ja das der grund warums bei mir nie funktionierte)
Im psql ist es nicht noetig, da geht es mit
li_import('pfad/dateiname'). Du brauchst eben nur die Zugriffsrechte.
Sobald eine Applikation BLOBS schreiben oder lesen will, muss das in
eine Transaktion. Auf der Startseite der PostgreSQL-Funktionen im
PHP-Manual ist ein Beispiel fuer ein Blob, in das man reinschreibt.
Fuer Bilddateien reicht ein pg_loimport().

So funktioniert's bei mir:

 $name = $HTTP_POST_FILES['updatei']['name'];
 $typ = $HTTP_POST_FILES['updatei']['type'];
 $size = $HTTP_POST_FILES['updatei']['size'];
 $tmpname = $HTTP_POST_FILES['updatei']['tmp_name'];
...
    pg_exec("begin");
    $loid = pg_loimport($name);
    $sql = "INSERT INTO bilder (bild, name, size, typ, htmlstr) values
($loid,'$name', $size, '$typ', '$htmlstr');";
    $res = pg_exec($sql);
    pg_exec("commit");

Die Tabelle bilder hat *bild* als Feld vom Typ oid fuer das large
Object.

> btw waere fuer mich noch interessant, welchen overhead ein solch ein
> blob hat, bzw ab welcher obj-groesse es sich lohnt.
Keine Ahnung;-)

> ob nicht eine unterscheidung sinnvoll ist und man kleine files nicht
> besser direkt in einer tabelle gespeichert werden sollten.
Dann wird man sie aber codieren muessen, was wiederum Overhead ist.
Oder mit welchem Datentyp dachtest Du, wird das ohne Codierung gehen?

Gruss
Conni


php::bar PHP Wiki   -   Listenarchive