![]() |
MySQL via PHP-Tunnel (über eigene libmysql.dll)
Liste der Anhänge anzeigen (Anzahl: 7)
Dieses Projekt ermöglicht den Zugriff auf eine MySQL-Datenbank über ein PHP-Skript.
Dabei werden folgende Punkte untersützt:
|
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Finde ich sehr interessant :-D Was hältst du von dem Gedanken das wir das ganze nach OpenSource verschieben? Oder lieber Freeware?
Denn hier in der Datenbanksparte habe ich die Befürchtung das es früh oder später untergeht. |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Hallo omata,
ich kann mich Jens nur anschliessen. Ich wollte gerade die Demo mal testen und habe auf zwei Webspace die Meldung erhalten, dass mein Benutzername und/oder meine Passwort falsch wären. Ich habe aber die Daten direkt aus meiner Datei vom Webspace genommen. Edit: --------------------------- Demo --------------------------- dbExpress-Fehler: Ungültiger Wert für Anwendername oder Passwort. --------------------------- OK --------------------------- |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Hatte eine Fehlermeldung beim compilieren (Delphi 7):
Zitat:
Zitat:
|
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
@SirThornberry:
Ok, ich denke Freeware ist da dann wohl der bessere Platz. Danke :thumb: @RWarnecke: Leider wurde beim Anmelden die Fehlermeldung des Skriptes nicht weiter durchgereicht und nur eine Standardfehlermeldung ausgegeben. Habe ich geändert, bitte nochmal testen. :coder: Vielleicht kommt jetzt ja eine etwas aussagekräftigere Fehlermeldung. @user0815: Danke für deinen Hinweis. Aber das kann doch nicht an meinem Quellcode gelegen haben? Den hast du doch selber kompiliert und da verwendest du doch die Units deines Systems (im speziellen die von dbExpress). Das kann doch nur bedeuten, dass dbExpress bei dir vorher auch schon nicht funktioniert haben kann. Oder verstehe ich da jetzt was falsch? :gruebel: |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Zitat:
|
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
![]() Ich meine das liegt an dem Delphi Update auf Version 7.1 Zitat:
|
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Zitat:
Zitat:
Wie auch immer, vielen Dank für deinen Hinweis. |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Hallo omata,
ich habe den Download aus Beitrag #1 nochmals neu heruntergeladen. Aber trotzdem bekomme ich immer noch den gleichen Fehler aus Beitrag #3. Ich benutze die Demo aus dem Verzeichnis 2.5, 3.0. |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
So ich konnte das reproduzieren und habe noch was geändert. Der besagte Fehler kam allerdings nur, wenn die URL nicht richtig war. Ruf mal bitte das Skript über einen Browser auf, dann sollte dort "Unbekannter Fehler" stehen.
Ist die URL falsch, so kommt jetzt auch ein aussagekräftigerer Fehlerhinweis. Sorry für die Probleme. |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Download wieder im Beitrag #1 ?
|
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Zitat:
|
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Also, irgendwie funktioniert Dein Upload im Beitrag #1 nicht, da ich immer die gleichen Dateien runterlade. Ich bekomme immer noch den gleichen Fehler.
|
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Das ist sehr schade. Bei mir funktioniert das jetzt wunderbar. Kannst du das Skript über den Browser aufrufen?
Edit: Wobei ich das nur mit Delphi 7 und Delphi 2009 testen kann. |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Zitat:
|
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Als kleine nette Erweiterung, wäre hier noch die Option "Datenbankserver". Bei manchen Webspace muss man statt localhost explizit einen anderen Datenbankserver angeben, damit man einen Zugriff auf seine MySQL-Datenbank erhält.
|
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Funktioniert wunderbar. Habe es eben mit beiden PHP 4/5 Dateien ausprobiert.
Man muss nur an das http:// vor localhost denken, sonst geht es nicht. :thumb: THX user0815 |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
:-D :-D
Das klappt ja hervorragend! Ich bin begeistert von dieser Lösung... Endlich kann ich ohne Webbrowser auf meine Datenbanken bei meinem Provider zugreifen... Einzig der Zugriff auf TEXT/MEDIUMTEXT/LONGTEXT und BLOBS ist nicht möglich, kann ich aber verschmerzen... Ansonsten eine TOP-Lösung! |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Hallo,
erst mal danke, klappt super. Leider nutze ich auch einen Server, der anstelle der localhost eine andere Serveradresse wie bei zu #16,Datenbankserver" beschrieben benötigt. Was muss man wo wie ergänzen. Ich habe es selber einmal versucht,und habe FloginU erweitert.
Delphi-Quellcode:
aber bekomme den Parameter 'host_adr' nicht in mein PHP-Scipt übertragen.
procedure TFLogin.Execute(SQLConnection: TSQLConnection);
begin EdURL.Text:=SQLConnection.Params.Values['Hostname']; EdDatabase.Text:=SQLConnection.Params.Values['Database']; EdUsername.Text:=SQLConnection.Params.Values['User_name']; EdPassword.Text:=SQLConnection.Params.Values['Password']; EdHost_adr.Text:=SQLConnection.Params.Values['host_adr']; if Self.ShowModal = mrOk then begin SQLConnection.Params.Values['Hostname']:=trim(EdURL.Text); SQLConnection.Params.Values['Database']:=trim(EdDatabase.Text); SQLConnection.Params.Values['User_name']:=trim(EdUsername.Text); SQLConnection.Params.Values['Password']:=trim(EdPassword.Text); SQLConnection.Params.Values['host_adr']:=trim(EdHost_adr.Text); SQLConnection.Open; end; end; Im PhP habe ich folgende Ergänzungen eingetragen,
Delphi-Quellcode:
werde aber mit Scriptfehler abgewiesen, da natürlich die host_adr über die libmysql.dll nicht übertragen wird. Würdest du du den Code für die dll auch noch einstellen, oder die DLL anpassen ?
private function Init() {
if (isset($_POST['id'])) { $_REQUEST[session_name()] = $_POST['id']; session_start(); if (isset($_SESSION['init']) && $_SESSION['init']) { return $this->connect($_SESSION['user'], $_SESSION['pass'], $_SESSION['db'], $_SESSION['host_adr']); } $this->ERROR = 'Fehler bei der Initialisierung.'; } else { session_start(); if (isset($_POST['command']) && $_POST['command'] == 'connect') { if ( isset($_POST['user']) && isset($_POST['pass']) && isset($_POST['db']) && isset($_POST['host_adr']) ) { if ($this->connect($_POST['user'], $_POST['pass'], $_POST['db'], $_POST['host_adr'])) { $_SESSION['init'] = true; $_SESSION['user'] = $_POST['user']; $_SESSION['pass'] = $_POST['pass']; $_SESSION['db'] = $_POST['db']; $_SESSION['host_adr'] = $_POST['host_adr']; $this->ID = session_id(); return true; } } } } return false; } private function connect($user, $pass, $database, $host_adr) { $this->db = mysql_connect($host_adr, $user, $pass); |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Schön das die Lösung auch bei euch funktioniert.
Zitat:
Zitat:
Zitat:
Das einzige, was möglich wäre, ist diese zusätzliche Information über den Hostname- oder die Database- Information mit einer speziellen Notation mit zu übergeben. Aber wie gesagt, ich verstehe nicht so ganz, warum das über das Delphiprogramm erfolgen soll. Gibt es den auf ein und dem selben Server die Notwendigkeit über ein und das selbe Skript mehrere Serveradressen angegeben zu können? Vielleicht könnt ihr mir das nochmal ausführlicher erklären. |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Hallo,
ich habe mir das PHP-Script eben mal angeschaut und bin dabei auf einen kleinen Gedankenanstoß gekommen. Wie wäre es, statt den MySQL-Funktionen die Socket-Funktionen zu nutzen und so PHP quasi als Proxy zu verwenden? Dies hätte den Vorteil, dass man sich mit MySQL selbst kaum befassen muss und bei richtiger Implementierung alle vorhanden Features gleichzeitig abdeckt. Nachteil ist, dass die Socket-Funktionen nicht überall verfügbar sind. Interessant wäre auch der Vergleich beider Möglichkeiten, v.a. hinsichtlich der Geschwindigkeit - sowohl die Ausführzeit auf dem Server, als auch der produzierte Traffic. Also wenn du mal Lust hast, dein Projekt weiter auszubauen, hättest du hier eine Möglichkeit. :-) Liebe Grüße, Valle |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Hallo,
Sicher mit dem Gedankenastoß :gruebel: die Adresse im Script zu implementieren sind auf einmal alle "Sorgen" verschwunden Manchmal ist die Lösung gedanklich so weit weg, und die Antwort so nah :wall: :wall: . |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Hi, :hi:
ich weiß erlich gesagt nicht so genau, was du mir mit deinem Post sagen willst. Also ich bin mir schon recht sicher mit meinem Gedankenanstoß, ich wüsste auch nicht, warum ich das nicht sein sollte. Was für eine Adresse du meinst weiß ich leider nicht. :duck: Liebe Grüße, Valle |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Hallo,
nein dein Gedankenanstoß war genau der Richtige, funktioniert auch alles super. Keine weiteren Verbesserungen nötig. Ich hätte da eigentlich selber drauf kommen können. Ich habe mal wieder zu kompliziert gedacht !! |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Achso! :)
Heißt dass, dass du meine Idee bereits implementiert hast? Oder funktioniert sie nur "im Gedanken"? ;-) Liebe Grüße, Valle |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Funktioniert !!! :thumb: :thumb:
Nochmals vielen Dank !!! |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Meine Güte ihr redet ja völlig aneinander vorbei! Bitte lest nochmal (in aller Ruhe und vollständig) was ihr da eigentlich geschrieben habt!
@waldforest: Schön, dass meine Überlegung nicht ganz falsch war und das das jetzt klappt. @Valle: Das ist ja eine schöne Idee und ich freue mich, wenn du da mal eine Lösung präsentierst. Aber ich glaube nicht das das geht. Wie soll das auf der Serverseite funktionieren? Da bekommt man nur Zugriff auf die Datenbank über z.B. PHP und die dortigen Funktionen, wie du da direkt auf den TCP/IP-Port von der MySQL-Datenbank zugreifen willst ist mir ein Rätsel. Oder kannst du mal ein Beispiel-Skript erstellen, das eben genau das zeigt (nur ganz einfach über PHP-Sockets eine SELECT-Anweisung abschicken und ausgeben). Wobei ich ja noch mehr mache als nur die Kommunikation bereit zustellen. Um Transaktionen zu realisieren kann kein einfacher Verbindungsaustausch alla Proxy realisiert werden, weil eben nach jeder Abfrage die MySQL-Session geschlossen wird. Da ist etwas mehr "Intelligenz" erforderlich. Gut, wenn man das nicht haben will, dann kann dein Vorschlag natürlich auch theoretisch funktionieren. Aber wie konkret? |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Sorry waldforest, aber ich glaube omata hat Recht: Irgendwie reden wir aneinander vorbei. :mrgreen:
Omata, ich habe eben versucht damit anzufangen meine Idee zu implementieren, bin dann aber leider darauf gestoßen, dass die Umsetzung mit mod_php und wahrscheinlich auch mit PHP allgemein nicht funktionieren wird. Das Problem ist, dass man das Socket, über welches der Apache mit dem Browser kommunziert nicht wie ein normales Socket verwenden kann. Wir brauchen ja einen bidirektionalen Stream, um Daten mit PHP Daten zu empfangen und zum Client zurück zu schicken. Die Kommunikation mit dem MySQL-Server selbst ist nicht das Problem: ![]() Also das Problem ist wohl HTTP. Schade, denn die Sache klang so eigentlich ganz interessant. Mal sehen, ob mir da noch was anderes einfällt. Die Idee alle MySQL-Funktionen quasi als Interface zu implementieren funktioniert zwar, aber ich strebe lieber allgemeinere Möglichkeiten an, die ein Einarbeiten in MySQL komplett unnötig machen. ;-) Ansonsten hast du natürlich gute Arbeit geleistet! Liebe Grüße, Valle :? |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Zitat:
Und natürlich kann man auch alles selber machen, aber hier war ja gerade die Idee, dass man die Datenbankkompoenten, die auf TDataSet aussetzen verwenden kann. Das bekommt man eben nicht so ohne weiteres hin, wenn man alles selber macht. Aber wie auch immer, es war ja auch nur so eine Idee, Machbarkeit ist zumindest bewiesen. |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Mh sorry, da habe ich mich wohl etwas unklar ausgedrückt.
Was ich mit Einarbeitung in MySQL meinte, war etwas anderes. Ich selbst habe schon einiges an Erfahrung mit MySQL gesammelt, schließlich bin ich schon einige Jahre in der Webprogrammierung unterwegs. Was ich meinte, war die Standard libmysql.dll von Delphi direkt mit dem MySQL kommunzieren lassen. Quasi über eine Art Socket Proxy. Somit muss man im PHP-Script keine Funktionen a "mysql_query" usw. bereitstellen. Das PHP-Script sollte dann nur dafür sorgen, dass MySQL-Server und Delphi-Client ordentlich miteinander kommunizieren können. Wenn man das richtig macht, dann ist das Script auch für alles mögliche benutzerbar, also z.B. HTTP-Proxys usw. Hoffe ich hab's jetzt besser formuliert - wenn nicht, dann sollte ich es für heute glaub' ich sein lassen. :duck: Liebe Grüße, Valle |
DP-Maintenance
Dieses Thema wurde von "r_kerber" von "Datenbanken" nach "Freeware" verschoben.
Auf Wunsch des Thread-Erstellers nach Freeware verschoben. |
Re: MySQL via PHP-Tunnel (über eigene libmysql.dll)
So habe eine neue Version (siehe #1) hochgeladen.
Jetzt werden auch "große" Datentypen sowie Lazarus unterstützt. Beispiele wurden auch erweitert. |
AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Hallo zusammen,
ich habe mir das Projekt heruntergeladen und mit Delphi 2010 kompiliert, soweit so gut. Wenn ich beim Login auf Connect klicke, erscheint aber eine Meldung über eine falsche oder nicht vorhandene libmysql.dll. Genauer:
Code:
Die geforderte .dll liegt im selben Verzeichnis wie die Demo.exe. Unter Windows oder Windowssystem32 ist keine andere Version der .dll vorhanden.
Cannot load LIBMYSQL.dll library (error code0). The LIBMYSQL.dll library may be missing from the system path or you have an incompatible version of the library installed
Die .dll hat die Version: 2.10.3.4 Danke bereits für eure Hilfe. :thumb: |
AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Vielleicht erwartet das Programm eine höhere Version der Dll
|
AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Liste der Anhänge anzeigen (Anzahl: 1)
die libmysql im Delphi2007-Ordner sagt sie wäre eine Version 0.0.0 ... eventuell ist das ja schon das Problem?
die mysql_get_client_version.exe im selben Verzeichnis gestartet, wie die libmysql.dll zeigt die MySQL-Client-Version an. Ich seh aber grad keine Quellcodes dieser DLLs, drum kann kann da nicht nachsehn. Es sind natürlich (vermutlich/bestimmt) Spezialversionen der libmysql, so daß ich jetzt auch keine zum Austauschen anbieten kann. |
AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Liste der Anhänge anzeigen (Anzahl: 2)
Ich habe mal eine neue DLL kompiliert und es wird nun die Version 50022 zurückgegeben. Vielleicht klappt das ja dann.
|
AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Hallo Leute,
ich habe ein Problem mit der Verbindung zum SQL-Tunnel über die Zeos-Komponenten. Ich versuche die Verbindung mit folgendem Code herzustellen, allerdings bekomme ich immer als Rückmeldung "'' ist kein gültier Integerwert". Mit den DBExpress-Komponenten funktioniert alles ohne Schwierigkeiten.
Delphi-Quellcode:
Gruß
ZConnWeb.Protocol := 'mysql';
ZConnWeb.HostName := 'http://www.xxxxxxxxxx.xx/sqltunnel.php'; ZConnWeb.Port := 3306; ZConnWeb.Database := 'xxxxxxxx'; ZConnWeb.User := 'xxxxx'; ZConnWeb.Password := 'password'; ZConnWeb.Connected := True; try ZConnWeb.Connected := True; except on E:Exception do MessageDlg(E.Message, mtError, [mbOK], 0); end; ZQueryWeb.SQL.Text := 'SELECT * FROM users'; ZQueryWeb.Open; NetSonic |
AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Hallo, ich habe mir das schon angesehen. Zeos ist da nicht so leicht zu manipulieren. Ich bin aber schon weiter gekommen, eine Anmeldung und das Auslesen der enthaltenen Tabellennamen ist schon möglich. Das Ausführen einer Abfrage leider noch nicht. Aber ich arbeite daran.
Mich würde allerdings mal eine Aussage ![]() |
AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Das klingt ja auf jeden Fall schon einmal nach etwas Fortschritt. Wie muss ich denn vorgehen, um überhaupt einen gültigen Connect mit den ZEOS-Komponenten zu bekommen? Hast Du da Beispielcode oder ein kurzes Howto in der Hinterhand?
Danke, NetSonic |
AW: MySQL via PHP-Tunnel (über eigene libmysql.dll)
Noch kannst du da gar nichts realisieren, ich muss die DLL erst anpassen. Die unterschiedlichen Zugriffsmethoden (dbExpress neu/alt und Lazarus) verwenden die MySQL-DLL alle unterschiedlich und ich muss intern erst alles richtig nachbilden (ohne den original Code zu besitzen, ist also alles nur Rätzelraten). Zeos zerstückelt die Hostname-Angabe so grauenvoll, dass die URL ohne "http://" und mit Backslash statt Slash anzugeben ist, damit ich die URL überhaupt in die DLL bekomme (ohne Zeos verändern zu müssen). Leider werden bei einer SQL-Abfrage die Spaltennamen noch nicht korrekt übergeben, so das dort sofort mit einer Fehlermeldung auftaucht, sobald man gezielt auf eine Spalte zugreifen möchte und da dies intern (über Zeos) sofort nach einer Abfrage durchgeführt wird, knallt es immer.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz