![]() |
in SQL Datenbank von extern schreiben mittels PHP
Da ich nur Webspace besitzte, der auch über eine SQL Datenbank verfügt, ich aber in diese nicht von Extern Datensätze schreiben oder lesen kann, dies aber für Statistikführung meiner Programme muss, habe ich eine Klasse entworfen, mit welcher man trotzdem mit Hilfe von einem PHP Script in die Datenbank schreiben kann.
Hier erst einmal die Unit / Klasse:
Delphi-Quellcode:
Wie verwendet man diese nun?
unit MYSQLPHPTunnel;
interface uses IdMultipartFormData, IDHTTP; type THTTP_POST_VARS = record Variable : string; Inhalt : string; end; type TmysqlphpTunnel = class private FTunnelScript : string; FHTTP_POST_VARS : TIdMultiPartFormDataStream; procedure SetHTTP_POST_VARS (AData : array of THTTP_POST_VARS); public constructor create; destructor destroy; override; procedure AccessDataBase (AData : array of THTTP_POST_VARS); property phpscript : string read fTunnelscript write ftunnelscript; end; implementation constructor TmysqlphpTunnel.create ; begin inherited create; self.FTunnelScript := ''; end; destructor TmysqlphpTunnel.destroy; begin inherited destroy; end; procedure TmysqlphpTunnel.SetHTTP_POST_VARS(AData : array of THTTP_POST_VARS); var i : integer; HTTP : TIDHTTP; begin self.FHTTP_POST_VARS := TIdMultiPartFormDataStream.Create; if high(AData) >= 0 then for i := 0 to high(AData) do self.FHTTP_POST_VARS.AddFormField(Adata[i].variable,AData[i].Inhalt); HTTP := TIDHTTP.create(nil); HTTP.Post(self.FTunnelScript,self.FHTTP_POST_VARS); self.FHTTP_POST_VARS.free; HTTP.Free; end; procedure TmysqlphpTunnel.AccessDataBase (AData : array of THTTP_POST_VARS); begin SetHTTP_POST_VARS(AData); end; end. Zunächst braucht man ein PHP Srcipt auf dem eigenen Webspace welches die eigentliche Arbeit (Schreiben von Datensätzen in die DB) übernimmt. Dies könnte z.B. so aussehen:
Code:
<?php
// HTTP_POST_VARS auslesen $name = $HTTP_POST_VARS['Name']; $VID = $HTTP_POST_VARS['VID']; $TimeStamp = $HTTP_POST_VARS['TimeStamp']; $ATC = $HTTP_POST_VARS['ATC']; $allow_realname = $HTTP_POST_VARS['Allow_RealName']; // define variables $db_host = 'host'; $db_user = 'user'; $db_pass = 'password'; $db_name = 'dbname'; $db_add_value = 'INSERT INTO table VALUES '; // db connection $db = mysql_connect($db_host, $db_user, $db_pass); if (!$db) { die('Could not connect: ' . mysql_error()); } else { mysql_select_db($db_name); $anfrage = "INSERT INTO Livetrack VALUES ('".$Name."','".$VID."','".$TimeStamp."','".$allow_realname."','".$ATC."')"; mysql_query($anfrage); } mysql_close($db); ?> Die Klasse TmysqlphpTunnel übernimmt nun jediglich das Senden der HTTP_POST_VARS an das PHP Script auf dem Webspace. Eine Anwendung könnte so aussehen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Postvars : array of THTTP_POST_VARS; Tunnel : TmysqlphpTunnel; begin // Setzen der HTTP_POST_VARS Variablen und Inhalte setlength(Postvars,5); PostVars[0].Variable := 'Name'; PostVars[0].Inhalt := 'Marco test'; PostVars[1].Variable := 'VID'; PostVars[1].Inhalt := '224003'; PostVars[2].Variable := 'TimeStamp'; PostVars[2].Inhalt := '123456'; PostVars[3].Variable := 'Allow_RealName'; PostVars[3].Inhalt := 'true'; PostVars[4].Variable := 'ATC'; PostVars[4].Inhalt := 'Observer'; // TmysqlphpTunnel Object erzeugen Tunnel := TmysqlphpTunnel.create; // Vollständigen Pfad des PHP Scriptes setzen, welches das Schreiben in die DB übernimmt Tunnel.phpscript := 'Pfad zum PHP Script + PHP Script Angabe'; // 'www.mein-web-sapce.de/dbaccess.php' // Datensatz in DB Schreiben Tunnel.AccessDataBase(PostVars); Tunnel.Free; end; Zugrunde lag dieser ![]() |
Re: in SQL Datenbank von extern schreiben mittels PHP
Siehe auch
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 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