File in Oracle DB schreiben
Andi
- php
Moin moin
Folgendes Problem: Will mit PHP ein File in eine Oracle DB schreiben. Habe bis jetzt einige Ansätze gefunden aber noch keine wirklich befriedigende Lösung! Deshalb meine Frage: Was sind eure Erfahrungen bzw. Lösungen (ev. Beispiele) damit?
Mfg Andi
Moin moin,
Was sind eure Erfahrungen bzw. Lösungen damit?
Eine Datei ist eine Datei, weil sie eine Datei ist!
Ich sehe keinen grundsätzlichen Sinn darin, eine Datei in einer Datenbank verschwinden zu lassen, auf die man mit PHP besseren Zugriff hat.
(ev. Beispiele)
<?php
include('datei');
$dat=file_get_contents('datei');
$dat=file('datei');
?>
Gruß aus Berlin!
eddi
yo,
Ich sehe keinen grundsätzlichen Sinn darin, eine Datei in einer Datenbank verschwinden zu lassen, auf die man mit PHP besseren Zugriff hat.
nur weil man keinen grund sieht, heisst das noch nicht, dass es keinen gibt. eine datei in einer datenbank hat den vorteil, dass man die funktionalität einer datenbank auch auf den file anwenden kann, nicht mehr und nicht weniger.
Ilja
Also zur Erklärung, es hat schon vorteile ein File direkt in die DB zu schreiben und außerdem erfordert es meine Aufgabenstellung!
Also ich habe folgenden Lösungsansatz:
$filehandle = fopen($_FILES['bild'][tmp_name],'rb');
$filedata = addslashes(fread($filehandle,$_FILES['bild'][size]));
//you must make it compatable with the string type of the query...
$typ=$_FILES['bild'][type];
$s=OCIParse($logon, "insert into T_MITARBEITER (BILD) values ('$filehandle') where M_ID=$out_id");
OCIExecute($s, OCI_DEFAULT);
Bevor diese Transaktion ausgeführt wird, schreibt eine PL SQL Procedure ein empty blob() in das Feld BILD.
mein Problem jetzt: wenn ich die ganze Gschicht ausführe, bekomme ich folgende Fehlermeldung:
Warning: ociexecute(): OCIStmtExecute: ORA-00933: SQL command not properly ended in /usr/local/apache2/2.0.49/htdocs/pm/pm/register.php on line 65
yo,
$s=OCIParse($logon, "insert into T_MITARBEITER (BILD) values ('$filehandle') where M_ID=$out_id");
where und insert passen nicht zusammen. du willst sicherlich einen update machen.
Ilja
hi
$s=OCIParse($logon, "insert into T_MITARBEITER (BILD) values ('$filehandle') where M_ID=$out_id");
where und insert passen nicht zusammen. du willst sicherlich einen update machen.
Merci haut aber immer noch nicht ganz hin.
hab jetzt da stehen:
$s=OCIParse($logon, "SELECT Bild INTO $iimage FROM T_MITARBEITER WHERE M_ID=$out_id FOR UPDATE");
OCIExecute($s, OCI_DEFAULT);
Wie müsst das jetzt weiter ausschauen, wenn ich $iimage durch $filedata upadten will? (In File data ist das File byte für byte gespeichert)
Lg Andi
yo,
du würfelst da ganz schön die schlüsselbegriffe durcheinander. das ist fast wie ein puzzle ;-)
aber spass beiseite. ein UPDATE hat vereinfacht dargestellt folgende syntax:
UPDATE tabellenname SET spalte1 = 'Wert1', spalte2 = 'Wert2' .... WHERE Bedingungen
auf deinen fall könnte das in etwa so aussehen:
UPDATE T_MITARBEITER SET Bild='$filedata' WHERE Bild = '$iimage'
Ilja
Hallo,
Also zur Erklärung, es hat schon vorteile ein File direkt in die DB zu schreiben
Mein Gehör ist Dir gewiß! Welche Vorteile sind das?
und außerdem erfordert es meine Aufgabenstellung!
Das war in Deinem Ausgangsposting nicht ersichtlich. Eine Aufgabenstellung, die in sich nicht schlüssig ist (eine Datei bezieht man von Dateisystem und nicht aus einer Datenbank, die ihrerseits Daten vom Dateisystem beszieht) sollte immer hinterfragt werden.
Ich sehe zwar selten aber dann ärgert es mich um so mehr, wenn ich mal wieder in einem Web bin und die Bilderdatenbank abschmiert. Es gibt viele Vorteile die für Files direkt über den Server serviert sprechen, nur laß uns diskutieren und nicht plump ablehen, weil Aufgabenstellungen dagegen stehen!
Gruß aus Berlin!
eddi
Hallo Ilja,
entschludige - ich sehe keinen SINN darin. Ich sehe sogar Gründe dagegen eine Datenbank fürs servieren von Files mit Mime image/x in einem Web.
Gruß aus Berlin!
eddi
yo Eddi,
entschludige - ich sehe keinen SINN darin.
brauchst du auch nicht. alle die darin keinen sinn sehen, machen das nicht. und alle, die darin einen sinn sehen tun es. alles tutti, alle zufrieden. wir kommen halt manchmal zu anderen ansichten. man muss nicht immer versuchen, den anderen von seiner meinung zu überzeugen.
Ilja
Hallo Ilja,
brauchst du auch nicht. alle die darin keinen sinn sehen, machen das nicht. und alle, die darin einen sinn sehen tun es. alles tutti, alle zufrieden. wir kommen halt manchmal zu anderen ansichten. man muss nicht immer versuchen, den anderen von seiner meinung zu überzeugen.
Wenn man Fehlerquellen sieht, war ich bis jetzt der Meinung, kann man den Mut schon aufmachen. Gut ich habe nun von Dir gelernt - man sollte es nur nicht. Danke!
Gruß aus Berlin!
eddi
yo eddi,
Wenn man Fehlerquellen sieht, war ich bis jetzt der Meinung, kann man den Mut schon aufmachen. Gut ich habe nun von Dir gelernt - man sollte es nur nicht. Danke!
niemand will dir deinen mut nehmen, deine meinung zu sagen. aber ich denke mal, genau das hast du ja auch getan und er wird das auch wahrgenommen haben. nur scheinbar kommt er zu anderen schlüssen als du, dass es nämlich in seinen augen kein fehler ist.
was ein fehler überhaupt ist und was nicht, dass läßt sich leider oder auch zum glück nicht immer so genau feststellen. was für den einen ein nachteil ist, dass ist für den anderen ein vorteil. meistens ist es so, dass viele dinge zwei seiten haben und deshalb ist eine entscheidung nicht immer so eindeutig.
ich jedenfalls würde meine argumente pro und kontra anführen und es dann jedem selbst überlassen, ob es für in ein größerer vorteil als nachteil ist. für andere zu entscheiden, was gut und was schlecht für ihn ist, dass traue ich mir nicht zu oder vielmehr, ich traue es jedem zu, das selbst zu entscheiden.
Ilja
yo eddi,
Wenn man Fehlerquellen sieht, war ich bis jetzt der Meinung, kann man den Mut schon aufmachen. Gut ich habe nun von Dir gelernt - man sollte es nur nicht. Danke!
niemand will dir deinen mut nehmen, deine meinung zu sagen. aber ich denke mal, genau das hast du ja auch getan und er wird das auch wahrgenommen haben. nur scheinbar kommt er zu anderen schlüssen als du, dass es nämlich in seinen augen kein fehler ist.
Du ja anscheinend auch nicht. Ob Andi scheinbar zu einem anderen Schlüssen kommt, bleibt wohl eher fraglich, sowie Dir anscheinend der Unterschied einiger Inbegriffe leider nicht gebräuchlich ist.
was ein fehler überhaupt ist und was nicht, dass läßt sich leider oder auch zum glück nicht immer so genau feststellen.
Das wäre doch mal ein schönes Thema für einen Briefwechsel :)
Allerdings sollten wir uns dann noch kurz über Berifflichkeiten wie Fehlerquelle und Fehler oder auch Sinn und Grund abstimmen.
was für den einen ein nachteil ist, dass ist für den anderen ein vorteil.
Performance einzubüßen und Bandbreite zu verschenken ist aber auch nur scheinbar ein Vorteil.
meistens ist es so, dass viele dinge zwei seiten haben und deshalb ist eine entscheidung nicht immer so eindeutig.
Das wäre auch ein schönes Thema für einen Briefwechsel, den ich Dir hiermit anbieten möchte :)
Vorab kann ich dazu schon mal sagen: Nein - dieses Verständnis teile ich ganz und gar nicht.
ich jedenfalls würde meine argumente pro und kontra anführen und es dann jedem selbst überlassen, ob es für in ein größerer vorteil als nachteil ist. für andere zu entscheiden, was gut und was schlecht für ihn ist, dass traue ich mir nicht zu oder vielmehr, ich traue es jedem zu, das selbst zu entscheiden.
Dem Verständnis dahinter muß ich mich geschlagen geben [1], jedoch würde ich dagegen auch ein zweites mal Verstoßen wollen, in der immer noch bestrebten Hoffnung lernen zu können.
Probleme, die man sieht aufzugreifen und festzustellen, wessen Probleme es sind, oder wo anscheined oder auch scheinbar Widersprüche sind, kann sich nur im Austausch von Meinungen wiederspiegeln, die diskutiert werden - aber nicht mit notorischen Floskeln begegnet werden. Und anders als Du bediene ich mich anderer Mittel um doch ersteinmal die Standpunkte sichten zu können, sich selbst die Möglichkeit zu geben den anderen in Gänze zu verstehen, so ist man in der Lage einstweilen den Grund eines Problem, statt nur dem Problem zu begegnen, oder -wer weiß- auch den Grund eines Grundes?
Gruß aus Berlin!
eddi
1) da s schlägt sich sogar selbst schlägt.
yo,
Performance einzubüßen und Bandbreite zu verschenken ist aber auch nur scheinbar ein Vorteil.
performance ist in meinen augen schon lange nicht mehr das thema numero uno in der IT-Welt, sondern nur noch eines unter vielen. wenn man sich mal umschaut, dann kommt es sogar sehr häufig vor, dass man auf performance verzichtet, um andere vorteile zu erhalten, die wesentlich wichtiger sind. nur so läßt sich die entwicklung von höheren programmiersprachen erklären, die letztlich auch von dir genutzt werden. auch grapfische benutzeroberflächen dienen ganz offensichtlich auch nicht der performance des rechners, sondern haben andere vorteile.
insofern muss man eben abwägen, was zahle ich und was bekomme ich dafür. in der heutigen zeit sind die rechner aber so schnell geworden, dass das pendel immer mehr in eine andere richtung ausschlägt, als die geschwindigkeit des rechners. sicherlich gibt es auch heute noch bereiche, wo performance an erster stelle steht. aber bezüglich der datenhaltung sprich datenbanken ist datenunabhängigkeit wesentlich wichtiger.
wenn also meine anwendungen für mein bereiche schnell genug sind, obwohl ich den umweg über eine gemeinsame schnittstelle mache, zumal das betriebsystem auch nur eine art schnittstelle ist, ich aber im gegenzug dazu viele andere vorteile genießen kann, dann verzichte ich doch auf etwas, was mich sowieso nicht stören würde.
Probleme, die man sieht aufzugreifen und festzustellen, wessen Probleme es sind, oder wo anscheined oder auch scheinbar Widersprüche sind, kann sich nur im Austausch von Meinungen wiederspiegeln, die diskutiert werden - aber nicht mit notorischen Floskeln begegnet werden. Und anders als Du bediene ich mich anderer Mittel um doch ersteinmal die Standpunkte sichten zu können, sich selbst die Möglichkeit zu geben den anderen in Gänze zu verstehen, so ist man in der Lage einstweilen den Grund eines Problem, statt nur dem Problem zu begegnen, oder -wer weiß- auch den Grund eines Grundes?
an einem briefwechsel habe ich kein interesse. schon aus dem grund, weil du deine art der argumentation als die bessere darstellst und meine abwertest. ich denke mal, für einen austausch ist die erste vorrausetzung, dass man sich einander respektiert. und da kommen wir beide anscheinend nicht auf einen nenner.
Ilja
Re:
schon aus dem grund, weil du deine art der argumentation als die bessere darstellst
woran machst Du das fest?
und meine abwertest.
Dann entschuldige nur auch da hilf mir bitte auf die Sprünge, mit welchem Wort ich das geschaft habe, denn es war weder meine Absicht, noch ist es mir ersichtlich.
ich denke mal, für einen austausch ist die erste vorrausetzung, dass man sich einander respektiert.
Dem stimme ich voll zu und frage Dich, wo ich dem zuwidergehandelt habe?
und da kommen wir beide anscheinend nicht auf einen nenner.
Nein - scheinbar. Vielleicht würde es helfen, wenn Du eine Argumentation gegen einen von Dir gerichteten Gedanken nicht als feindselig interpretieren würdest...
Gruß aus Berlin!
eddi
schau eddi,
wem gelten den deine worte wie "aber nicht mit notorischen Floskeln begegnet werden" und "anders als Du bediene ich mich anderer Mittel um doch ersteinmal die Standpunkte sichten zu können, sich selbst die Möglichkeit zu geben den anderen in Gänze zu verstehen, so ist man in der Lage einstweilen den Grund eines Problem, statt nur dem Problem zu begegnen" ?
das bedeutet doch nichts anderes, dass ich mich notorischer Floskeln bediene und den problemen mit meinen mittel nicht auf den grund gehen kann. diese sätze dienen weniger dazu, die eigenen argumente zu unterstreichen, sondern zielen eindeutig auf meine person. eine person abzuwerten ist sicherlich eine oft angewandte methode, um seine position in einer diskussion zu verbessern. ich habe daran aber kein interesse.
Ilja
sieh Ilja,
wem gelten den deine worte wie "aber nicht mit notorischen Floskeln begegnet werden" und "anders als Du bediene ich mich anderer Mittel um doch ersteinmal die Standpunkte sichten zu können, sich selbst die Möglichkeit zu geben den anderen in Gänze zu verstehen, so ist man in der Lage einstweilen den Grund eines Problem, statt nur dem Problem zu begegnen" ?
jedem, mit dem ich rede.
das bedeutet doch nichts anderes, dass ich mich notorischer Floskeln bediene
In der nun auf einmal aufgebrachten sensiblen Art, in der Du weiterhin [1] mit dem Finger auf mich zeigst, hast Du vorher nicht lesen wollen, sondern Grundlegendes unsensibel verdreht. Unterschwellig richtest Du - und das auf einer diskusionsbedürftigen Grundlage. [2]
und den problemen mit meinen mittel nicht auf den grund gehen kann. diese sätze dienen weniger dazu, die eigenen argumente zu unterstreichen, sondern zielen eindeutig auf meine person. eine person abzuwerten ist sicherlich eine oft angewandte methode, um seine position in einer diskussion zu verbessern. ich habe daran aber kein interesse.
Mich würde interessieren, warum Du nicht das Wasser trinks, was Du predigst. [3]
Und genau dieses Verhalten sind dann nur Floskeln vor meinem Auge.
ich jedenfalls würde meine argumente pro und kontra anführen und es dann jedem selbst überlassen, ob es für in ein größerer vorteil als nachteil ist. für andere zu entscheiden, was gut und was schlecht für ihn ist, dass traue ich mir nicht zu oder vielmehr, ich traue es jedem zu, das selbst zu entscheiden.
Zieh Dir bitte den Schuh an, der Dir paßt! Genauso sensibel kann ich da doch auch auslegen,
- ich kann kein pro und kontra anführen [4],
- ich lebe in dem Glauben für andere entscheiden zu müssen.
man muss nicht immer versuchen, den anderen von seiner meinung zu überzeugen.
Ist das etwa nicht in der Hinschicht deutbar, daß ich nur um des Überzeugens wegen diskutiere?
alles tutti, alle zufrieden. wir kommen halt manchmal zu anderen ansichten. man muss nicht immer versuchen, den anderen von seiner meinung zu überzeugen.
Wo ist Dein kontra (DB) nachzulesen?
Gruß aus Berlin!
eddi
yo Eddi,
ich habe weder lust, deine person anzugreifen noch meine angreifen zu lassen. lass es doch einfach darauf beruhen, dass wir keine gute diskussionen zusammen bekommen werden. so ist das halt manchmal. lass uns einfach einen schlußstrich ziehen.
Ilja
Re:
lass uns einfach einen schlußstrich ziehen.
Zunächst möchte ich Dir meine Hochachtung aussprechen, daß Du einer derjenigen bist, die sich einstweilen auch mit syntaktischem Inhalt merklich auseinander setzen. Daher will ich Dir nur noch mein Mißfallen über Dein letztes Posting ausdrücken, daß nach https://forum.selfhtml.org/?t=89732&m=538337 und https://forum.selfhtml.org/?t=89732&m=538355 auch, entweder an Anstand ermangelt, oder eine weitere Floskel entblößt.
Und auch zu letzt aus diesem Grunde begrüße ich Deine Aufforderung.
Gruß aus Berlin!
eddi