Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   MySQL via PHP-Tunnel (über eigene libmysql.dll) (https://www.delphipraxis.net/148076-mysql-via-php-tunnel-ueber-eigene-libmysql-dll.html)

Daniel 12. Aug 2010 13:45

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Zitat:

Zitat von omata (Beitrag 1041520)
Mich würde allerdings mal eine Aussage hierzu von einem Verantwortlichen interessieren. Passiert da noch etwas? Wie gesagt, sonst wird es keine neue Downloadversion geben.

Ich schaue, ob ich am Wochenende eine Abhilfe schaffe. Die kurzfristige Lösung wird so aussehen, dass Du zusätzlich eine neuen Download anfügen kannst.

NetSonic 12. Aug 2010 13:45

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Ok, also müsste ich vorerst bei den DBExpress-Komponenten bleiben, wenn ich solch einen Zugriff möglichst zeitnah realisieren will?! Das gefällt mir zwar nicht so wirklich, aber was solls :(
Ich bin aber an Deiner Umsetzung interessiert, also wenn es etwas neues gibt, würde ich mich über einen Hinweis freuen!

Gruß
NetSonic

omata 12. Aug 2010 14:08

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
@Daniel: danke :thumb:

@NetSonic: Wenn zeitnah sofort bedeutet, dann ja. Ich habe mich gestern erst damit beschäftigen können und bin eigentlich ganz gut vorangekommen. Leider geht es aber noch nicht vollständig und ich kann noch nicht genau sagen, wann alles funktionieren wird. Werde aber heute Abend weiter daran arbeiten.

NetSonic 12. Aug 2010 14:31

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Naja, ich hätte hier die Anbindung natürlich gerne so schnell fertig gestellt - wie das halt immer so ist :P.
Aber ich könnte auch damit leben, wenn es erst in der nächsten Woche voran geht. Ich meine, eigentlich muss ich nur SELECT-Abfragen und UPDATE/INSERT-Statements übermitteln, was ja mit DBExpress geht. Ich werde also erstmal, dass ganze "Drumherum" fertigstellen und testen, damit bin ich noch ein paar Tage beschäftigt und vielleicht gibt es ja dann von Dir schon Neuigkeiten, dann kann ich immer noch auf ZEOS "umswitchen". Und wenn nicht, ist es auch nicht schlimm...

omata 13. Aug 2010 00:20

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
So es gibt nun eine neue Version.

Es existiert nun nur noch eine DLL (getestet mit Delphi 7, Delphi 2009 und Lazarus)

Unter Delphi wird nun dbExpress und Zeos unterstützt.

Unter Zeos ist die URL speziell zu formulieren (siehe Demo).

NetSonic 13. Aug 2010 07:37

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Ganz saubere Arbeit omata! :thumb:
Connect funktioniert ohne Probleme, allerdings bekomme ich bei einer SQL-Query mit ZEOS den Fehler, das die SQL-Syntax fehlerhaft sein soll:

Delphi-Quellcode:
ZQueryWeb.SQL.Text := 'SELECT * FROM web-user_webdb1.tbluser';
ZQueryWeb.Open;
Die Datenbank heißt "web-user_webdb1". Der Benutzer ist "webdb1".

Ich habe jetzt einmal die Verbindung auf meinem lokalen Server getestet. Dort geht es, allerdings sind dort folgende Daten eingetragen: Die Datenbank heißt "webtest". Der Benutzer ist "root". Ist der Fehler ggf. im Bereich "web-user_webdb1.tbluser" zu suchen? Ich vermute er kommt irgendwie nicht mit dem "-"-Zeichen klar, da die Meldung lautet:
"...for the right syntax to use near "-user_webdb1 LIKE 'tbluser'' at line 1'..."

DeddyH 13. Aug 2010 09:04

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Das Problem hatte ich auch schon. Vermutlich wird das "-" als mathematisches Minus interpretiert und somit versucht, irgendetwas auszurechnen. Da ich aber keine Zeit hatte, nach Workarounds zu suchen, habe ich einfach kurzerhand die DB umbenannt.

NetSonic 13. Aug 2010 09:09

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Das hört sich auf jeden Fall plausibel an. Ich werde das einmal ausprobieren.

* UPDATE *
Ich habe es getestet und es liegt definitiv an dem "-"-Zeichen im Namen der Datenbank. Damit gibt es diese Probleme. Ggf. sollte das aber ja noch zukünftig zu beheben sein.

omata 13. Aug 2010 10:44

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Schön, das das jetzt auch mit Zeos geht und noch eine Verbesserung konnte ich erziehlen, es gibt jetzt nur noch eine DLL für alles (getestet: Delphi 7 und Delphi 2009 und Lazarus).

Meldest du dich an "web-user_webdb1" an? Weil dann benötigst du doch diese Angabe gar nicht in der SQL-Abfrage. Oder greifst du von einem Schema auf ein anderes zu?

Das Problem ist, das der Zugriff über mysql_query (von PHP) diesen Fehler produziert. Man kann das umgehen, wenn man alles maskiert mit ` aber dieses Zeichen wird leider nicht an die DLL übergeben und vorher irgendwo weggefiltert (in dbExpress und Zeos). Ich kann natürlich jetzt irgendein anders Zeichen definieren, das dann innerhalb von PHP zu ` wird. Aber das gefällt mir nicht wirklich.

Habt ihr vielleicht noch eine Idee?

omata 13. Aug 2010 11:16

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Vergesst einfach, was ich eben geschrieben habe. Ich habe die Maskierungszeichen selber entfernt (in der DLL) :wall:

Neue Version im ersten Post, bitte mal testen.

NetSonic 13. Aug 2010 12:15

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Zitat:

Zitat von omata (Beitrag 1041823)
Meldest du dich an "web-user_webdb1" an? Weil dann benötigst du doch diese Angabe gar nicht in der SQL-Abfrage. Oder greifst du von einem Schema auf ein anderes zu?

Ich melde mich an dieser Datenbank an, allerdings enthält die Query nicht den Namen der Datenbank, sondern nur den der Tabelle. Als Fehlermeldung bekomme ich dann aber eben diese komplette Rückmeldung mit "dbname.tabellenname". Scheint also vom PHP-Script oder der DLL so behandelt zu werden.

omata 13. Aug 2010 12:27

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Klappt das nun mit der neuen DLL?

NetSonic 13. Aug 2010 12:31

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Dazu müsste ich die Datenbank jetzt erst wieder umbenennen. Muss jetzt aber zunächst etwas anderen machen, d.h. dazu werde ich erst am Wochenende kommen. Du bekommst aber auf jeden Fall eine Rückmeldung.

Ajin 25. Aug 2010 07:57

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Hallo und guten Morgen !

welche libmysql.dll ist denn fuer dieses Projekt die richtige, ein 32Bit Betriebssystem vorausgesetzt? Denn beim Testen dieser Anwedung bekomme ich immer den libmysql.dll error (not found oder wrong)

Die libysql.dll ist im Verzeichnis des .exe files und im System32 Ordner.

Ich habe etwas im Netz gestoebert und etliche libmysql.dll gefunden. Welche ist mit Win7 kompatibel?

himitsu 25. Aug 2010 08:22

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Im Ausgangsthread sollte eine spezielle DLL beiliegen.

Ajin 25. Aug 2010 08:38

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
I know, die hab ich auch erfolglos mit besagter Fehlermeldung getestet. Ich versuche es dann mal auf einer anderen Maschine - evtl. liegts an meinem OS

himitsu 25. Aug 2010 08:46

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Eine andere DLL ist nicht möglich, da dieses eine "Eigenentwicklung" ist, welche mit dem PHP-Script redet.

Probier mal die Version aus dem Post #36.

Ajin 25. Aug 2010 08:59

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Ich hab die DLL aus Post #36 eben getestet. Leider bleibt der Errorcode 0.

himitsu 25. Aug 2010 09:00

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Damm müssen wir auf omata (den Schöpfer dieser DLL) warten ... vielleicht kann er ja was machen.

omata 12. Sep 2010 14:08

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Für Problematiken mit Delphi 2010 bitte auch diese Diskussion beachten.

somewhere 2. Jan 2011 19:00

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Da ich mich nun ebenfalls mit diesem Thema herumschlage, wollte ich Deine Lib benutzen.
Leider funktioniert bei mir weder die Kommunikation über Zeos noch über DBX. Habe jetzt keine Ahnung mehr warum.
Mit DBX erhalte ich die gleiche Fehlermeldung wie Ajin und das schon beim Connect Versuch.
Mit Zeos 7.0 (leider Alpha) kann ich connecten, Tabellen anlegen, Table und Views auslesen. Nur beim Select knallts, egal ob mit
Delphi-Quellcode:
select * from ...
oder mit z.B.
Delphi-Quellcode:
select node_id from nodes
.

Der Fehler dürfte allerdings im PHP Script passieren.

Meine Konfiguration schaut so aus:

Turnkey VBox Appliance mit MySQL

Zugriff über Webbroser oder eben der Demo vom lokalen Rechner bzw. einer zweiten VM mit Delphi.

Hast Du eventuell eine Ahnung was das Problem sein könnte?

Eduard

omata 8. Jan 2011 19:40

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Zitat:

Zitat von somewhere (Beitrag 1071829)
Leider funktioniert bei mir weder die Kommunikation über Zeos noch über DBX.

Das ist mir bewusst und ich hatte hier ja auch schon was zu diesen Problemen gestrieben.

DBX wurde in Delphi 2010 komplett verändert, so dass ich dafür erst einen komplett neuen Treiber schreiben muss. Das habe ich auch, allerdings funktioniert der noch nicht mit allen Datentypen.

Zeos würde ich auch gern mal ausprobieren. Allerdings bin ich einfach zu blöd, um das zu installieren. Bei mir ist die Komponentenleiste leer (nicht vorhanden). Gleiche Probleme wie hier, nur dass das Eintragen der Verzeichnisse nichts bewirkt.

Zitat:

Zitat von somewhere (Beitrag 1071829)
Der Fehler dürfte allerdings im PHP Script passieren.

Das dürfte unwarscheinlich sein, weil das Skript mit Delphi 7 - Delphi 2009 und Lazarus wunderbar funktioniert. Das Problem ist z.Z. nur Delphi 2010.

Ich würde da sehr gern weiter dran arbeiten, allerdings sind die Probleme vor denen ich da stehe immens und ich komme z.Z. einfach keinen Millimeter vorran.

omata 8. Jan 2011 20:27

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
So, ich konnte jetzt doch Zeos installieren.

Nachdem ich innerhalb des Packages "ZComponentDesign" unter Erfordert das Package "ZComponent" entfernt hatte ging es endlich.

omata 8. Jan 2011 22:16

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
So, habe mal eine Version hochgeladen (siehe Post #1)

An die Verantwortlichen:
Leider ist der Downloadzähler immer noch nicht korrigiert, ich kann also davon ausgehen, dass das NIEMALS korrgiert wird? Sehr schade, dass hier nichts in der Richtig passiert. Siehe auch hier.

somewhere 9. Jan 2011 15:06

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Ich werde mir die Version mal ansehen und gebe dann wieder Feedback.
Das Problem mit der Zeos Installation hatte ich Anfangs auch. Du musst im Projekt für das Package nur das Suchverzeichnis erweitern, dann funktioniert ZEOS Installation problemlos.

somewhere 9. Jan 2011 19:10

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Habe die Zeos Version jetzt mal getestet, die funktioniert nach einer kleinen Änderung im Demosource.

Welche Version von Zeos hast Du verwendet?

omata 9. Jan 2011 20:28

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Zitat:

Zitat von somewhere (Beitrag 1073525)
Habe die Zeos Version jetzt mal getestet, die funktioniert nach einer kleinen Änderung im Demosource.

Was hast du verändert?

Zitat:

Zitat von somewhere (Beitrag 1073525)
Welche Version von Zeos hast Du verwendet?

7.0.1 alpha

omata 10. Jan 2011 01:07

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
So es gibt wieder eine neue Version.

Die "dbxmys.dll" wurde im Archiv erneuert, sodass jetzt auch ein funktionierender DBX4 Treiber vorhanden ist (der von Embarcadero funktioniert ja leider nicht!)

Allerdings ist mein Treiber noch nicht ganz vollständig. Es funktionieren noch keine Tabellenspalten, die von einem Zeitdatentyp sind, da muss ich noch weiter forschen.

Aber vielleicht könnt ihr das schonmal soweit testen, danke.

somewhere 10. Jan 2011 09:40

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Also bei Deiner Zeos Version habe ich nur im Uses Teil "ZAbstractConnection" eliminiert, da es die bei mir nicht gibt. Ich glaube ich verwende noch die Version 7.0.0 Alpha.

mschaefer 8. Mai 2011 20:37

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Wenn man so eine Internettabelle mit merheren Usern teilt, gemeinsam Zugriff hat, wie würdet Ihr die Verwaltung organisiernen? Zum Beispiel, wenn nur die eigenen Datensätze geändert werden können sollen, oder diejenigen, die vom ausdrücklich freigegeben sind.

sonic 17. Mai 2011 19:52

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Hallo,

ich verwende den PHP-Tunnel mit ZEOS unter Delphi 2006.
Es funktioniert soweit alles sehr gut. Tolle Arbeit!

Große Probleme hab ich allerdings wenn die Internetverbindung bei einem aktiven MYSQL Zugriff
unterbrochen wird. -> Das reicht von Speicherzugriffsverletzungen bis zum kompletten einfrieren
der Applikation.

Ich kann das aus der Entwicklungsumgebung gut nachstellen indem ich die Internetverbindung bei
einer Abfrage einfach trenne. -> leider dürften die Fehler in der libmysql.dll passieren ->
ich lande immer in der CPU - Ansicht...

Hat noch jemand das Problem, bzw. gibt es Lösungsvorschläge?
Ich vermute du möchtest den Source der libmysql.dll nicht freigeben?

Lg Sonic

omata 17. Mai 2011 22:14

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Zitat:

Zitat von sonic (Beitrag 1101434)
Ich vermute du möchtest den Source der libmysql.dll nicht freigeben?

Leider komme ich zur Zeit nicht weiter mit diesem Projekt.

Ich veröffentliche gerne den Quellcode und würde mich sehr freuen, wenn wir gemeinsam zu einer funktionierenden Lösung kommen. Besonders die Unterstützung von DBX4 wäre sehr gut, aber ich komme da einfach nicht weiter.

Bei Veränderungen und/oder Verbesserungen wäre es toll, wenn hier auch diese Korrekturen veröffentlicht würden.

sonic 18. Mai 2011 07:32

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Hallo Omata, danke für die rasche Antwort!

Toll das du den SRC freigegeben hast!
Ich werde gleich mal beginnen die Probleme bei Internetverbindungsunterbrechungen
zu analysieren. Sobald ich Korrekturen habe werde ich sie dir selbstverständlich
übermitteln.

Lg Sonic.

mschaefer 18. Mai 2011 08:32

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Hallo Omata,

komme wohl erst am Wochenende dazu, werde dann aber mit Suche gehen.

Grüße

StefanKortenhaus 24. Mai 2011 11:01

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Danke! Funktioniert astrein mit Delphi 2006 und der Zeos Komponente (6.6.6-stable)
Der Knackpunkt war bei mir, in der sqltunnel.php in der Zeile 252

Code:
$DB = new DbClass('localhost');
das localhost mit der wirklichen IP des Servers zu ersetzen, da der Server wohl kein localhost mag.. ;-)

Great work!

teosuper 16. Jun 2011 15:57

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Ich habe die componenten in Delphi 2007 installiert mit Zeoslib 6.6.6. Das geht gut, bis auf dem Moment wo ich joins verwende, dann knallt es in Zeoslib. (Access violation).

Ich frage mich ob SQL mit joins geht, denke mir dass es am PHP ende nur eine Tabelle ist und frage mich jetzt ob ich vielleicht etwas falsch mache oder auch ob ich irgendwo Hilfe bieten kann.

Gruss,
Teo

omata 16. Jun 2011 20:04

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Wenn du die DB-Verbindung mal über die original DLL herstellst (localhost-Datenbank) funktioniert dann deine SQL-Abfrage? Oder, wenn das nicht geht, weil du lokal keine Datenbank installiert hast: Versuche deine Abfrage mal direkt in PHP zu hinterlegen (eigene Datei auf dem Server) und versuche, ob dein Statement so funktioniert.

Dritte Variante: Zeig mal deine SQL-Anweisung.

teosuper 16. Jun 2011 22:18

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Die query functioniert im PHPAdmin auf der Website einwandfrei.

Ich habe allerdings etwas weiter getestet:

Meine Abfrage im PHPAdmin geht so:

SELECT * FROM sections left join pages on sections.page_id = pages.page_id

Meine Abfrage in Delphi gibt damit eine Access Violation, ich soll die Verbindung trennen und wieder erstellen bevor eine neue Abfrage geht.

Wass mir am Ende eingefallen ist, ist das ausschreiben der Felder meiner Abfrage:

SELECT pages.page_title, sections.page_id FROM sections left join pages on sections.page_id = pages.page_id

und dabei stellt sich dan eraus dass diese Abfrage DOCH functioniert.

Versteht sich dass ich "Select *" bevorzuge obwohl ich zufrieden bin mit einschliessen der Feldnamen.

(entschuldige mein Deutsch).

Ich möchte gerne ein Kompliment machen: ich bin beëindruckt!

Gruss
Teo

sonic 22. Jun 2011 18:39

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Hallo Omata,

ein kurzes Zwischenergebnis, leider bin ich noch nicht zu viel gekommen...

das komplette Einfrieren konnte ich bereits (lösen) ->
Der IdHttp in der DLL hat keinen ReadTimeout definiert, und der wartet dann scheinbar tatsächlich bis in die Ewigkeit. Leider auch wenn die Internetverbindung wieder kommt. Zumindest war das meine Erfahrung.

Die Frage ist natürlich ob der ReadTimout aus der Haupt-Anwendung gesetzt werden kann weil fix einen Wert einzustellen kann bei großen Abfragen natürlich zu Problemen führen.
(für mich habe ich mal _IdHttp.ReadTimeout := 30000 gesetzt, und dann friert's nicht komplett ein)

Einem weiteren Problem bin ich auf der Spur:
Hat man nun einen Timeout, so bekommt man auch in der function mysql_query(Handle: PMYSQL; const Query: PAnsiChar): Integer; die Timeout Exception mit, und es wird Result 1 zurückgegeben.
Trotzdem versuchen die Zeos Komponenten teilweise hartnäckig weiterzumachen:?:... -> Exceptions.

Ich such weiter.
Lg Sonic

Tobinator 14. Aug 2011 13:50

AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
 
Hi,

ich hab mir die dateien auch mal gezogen und muss sagen, gute arbeit. es funktioniert soweit alles wunderbar, nur eine sache funktioniert bei mir noch nicht so ganz:

wenn ich einfüge oder ändere, wird aus ß ein ? und aus ä ein a usw.

also das SQL-Statement ist noch richtig, nur in der DB kommt was falsches an.

was mache ich falsch? muss ich an den komponenten oder der sqltunnel.php oder vllt. an der db noch was ändern?
oder ist es vllt. noch ein bug in deinem tunnel?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz