Firebird fájl feltöltés PHP vel blob -ba.
Sziasztok!
Egy Firebird gurut keresek, aki tudna segíteni a következő kérdésben.
Adott egy firebird adatbázis.
PHP vel az egy űrlapon keresztül töltenék fel egy táblába adatokat. Az adatok között szerepel egy ADAT(blob) nevű rekord ahova a fájlt szeretném feltölteni.
Ilyesmi módszerrel próbálkoztam.:Az adtbázisba nem csak a fájl menne egyedül. Raknék a többi rekordba pl leírást, azonosítót meg hasonló varchar illetve integer adatokat.
Ha már elolvasod azt is megköszönöm.
Üdv. Laci
■ Egy Firebird gurut keresek, aki tudna segíteni a következő kérdésben.
Adott egy firebird adatbázis.
PHP vel az egy űrlapon keresztül töltenék fel egy táblába adatokat. Az adatok között szerepel egy ADAT(blob) nevű rekord ahova a fájlt szeretném feltölteni.
Ilyesmi módszerrel próbálkoztam.:
include "connect.inc.php";
if (isset($_POST["bekuldve"]))
{
echo "Feltöltendő Fájl: ".$_FILES['file']['name'];
echo "<br />Fájl feltöltése....<br />";
$data = $_FILES['file']['name'];
$blh = ibase_blob_create($dbh);
ibase_blob_add($blh, $data);
$blobid = ibase_blob_close($blh);
$sql = "INSERT INTO WRKC(ADAT) VALUES (?)";
$sth = ibase_query($dbh, $sql, $blobid);
}
else
{
echo "<form action=".$_SERVER["PHP_SELF"]." method=\"post\" name=\"hf\" enctype=\"multipart/form-data\" >
<input type=\"file\" size=\"20\" name=\"file\">
<input type=\"submit\" value=\"Feltöltés\" name=\"bekuldve\">
</form>";
}
Ha már elolvasod azt is megköszönöm.
Üdv. Laci
Nem kell hozzá gurunak lenni...
Próbáld inkább így:
olvasnivaló
Idáig meg van
pl hol a fájl? Hogyan töltöm be a blobba?
éz nem tisztszta. Az $_FILES tömbömbe vannak a fájlok. És azokat a ibase_blob_add rakja binárisba?
és utána INSERT -elem? Vagy hogy van ez. Help please. Valami egyszerű példát ha tudtok.
Köszi előre is.
Nos..
Ha igen: ibase_blob_add függvénnyel teszed a (bináris vagy bármilyen) tartalmat a blob objektumba. A $_FILES tömbben nem a feltöltött fájok vannak, hanem információ a feltöltött fájlokról (bővebben a php dukomentációban). Többek között benne van a tmp_name indexen tárolva a feltöltött fájl átmeneti neve a szerveren. Ha hozzá szeretnél férni egy fájl tartalmához, akkor van PHP függvény, ami elvégzi neked, ez nem más, mint a Norbi által említett file_get_contents (bővebben a dokumentációban).
OK
tehát úgy fog kinézni a dolog, hogy a $crealt_blob = ibase_blob_create() létrehozok egy blobot. Aztán egy vátzóba a $data = file_get_contents() be belerakom a $_file[file][tmp_name] . Aztán az ibase_blob_add($crealt_blob,$data).
Ha jól értem ennek működnie kell!
Köszi szépen a választ.
Háááát.. mondjuk
baj van!
Csak azért hogy lássam, hogy hogy fog menni a betöltés ha több adatot kell INSERT elni egy táblába.
Valahol ott van baj, hogy a firebird nem akarja elfogadni a blobot
Hibauzenet:
ibase_prepare() [function.ibase-prepare]: Dynamic SQL Error SQL error code = -104 Token unknown - line 7, column 10
erre a kódra:
Bocsi hogy ennyit sírok, de egyszerűen nem jön össze.
Köszi Laca
Rossz az inserted
Részlet a manualból:
Helyzet
Warning: ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = -104 Unexpected end of command - line 1, column 144
SQL Alapok
Nagyon zsír
ezt nem kellene átadni valaminek? ibase_blob_add($blh, $buffer);
Ne csináld már
Ebből láthatod, hogy az ibase_blob_close() által visszaadott blob azonosítót (a példában ez a $blobid változóba kerül) kell
átadnod az adatbázisnak az insert utasításban. A fenti példában a blobtable táblában egy mező van aminek a neve blobfield, ezt a paramétert adod oda a query-nek, ami a ? helyére berakja, ha több oszlopod van akkor vagy a többi paramétert is bindolod (kérdőjelet írsz a helyükre és az értékeket az ibase_query()-ben adod meg, vagy ezt írod:
A te példádban az ADAT mezőnek egy üres stringet adsz át ('') ezek után miért csodálkozol, hogy nem működik?
Olvasgasd a php manualt, meg ismerkedj az sql-lel mert így hiába írunk neked példát nem fogod fel, és így fogalom nélkül copy-paste-elsz.
Köszi szépen
Azért nagyon köszi a segítséget.