Daten in MySQL auf einem Internet-Server verwalten..
Moderator: wriedmann
Daten in MySQL auf einem Internet-Server verwalten..
Hallo Meinhard,
wie geschrieben: mir persönlich ist es auch zu gefährlich, einen Datenbank-Port zum Internet zu öffnen....
Grade heute wieder einen entsprechenden Hinweis gesehen, in einem Artikel über massenweise und automatisierte Hacking-Angriffe, diesmal auf MS SQL Server.
Daher nutze ich lieber andere Methoden, wenn die DB schon im Internet zur Verfügung stehen muss.
Dann scheitern schon mal automatisierte Angriffe.
Wolfgang
wie geschrieben: mir persönlich ist es auch zu gefährlich, einen Datenbank-Port zum Internet zu öffnen....
Grade heute wieder einen entsprechenden Hinweis gesehen, in einem Artikel über massenweise und automatisierte Hacking-Angriffe, diesmal auf MS SQL Server.
Daher nutze ich lieber andere Methoden, wenn die DB schon im Internet zur Verfügung stehen muss.
Dann scheitern schon mal automatisierte Angriffe.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
-
- Posts: 97
- Joined: Tue Mar 01, 2016 11:50 am
- Location: Germany
Daten in MySQL auf einem Internet-Server verwalten..
Hallo Zusammen,
...erst mal vielen Dank an alle Unterstützer.
Ich habe jetzt begonnen, das mit dem PHP-Interface zu testen - als Idee/Grundlage dient das Beispiel von Wolfgang.
Sieht so aus, als würde das recht gut und problemlos funktionieren.
@Wolfgang:
Die Objecte in der Hardcopy aus einem der ersten Antworten sind in dem Beispielcode leider nicht enthalten z.B.'CreateInsertStatement', 'oData' oder 'oRecord'.
Wäre es möglich da noch etwas Code zu bekommen?
Vielen Dank im Voraus
Gerhard
...erst mal vielen Dank an alle Unterstützer.
Ich habe jetzt begonnen, das mit dem PHP-Interface zu testen - als Idee/Grundlage dient das Beispiel von Wolfgang.
Sieht so aus, als würde das recht gut und problemlos funktionieren.
@Wolfgang:
Die Objecte in der Hardcopy aus einem der ersten Antworten sind in dem Beispielcode leider nicht enthalten z.B.'CreateInsertStatement', 'oData' oder 'oRecord'.
Wäre es möglich da noch etwas Code zu bekommen?
Vielen Dank im Voraus
Gerhard
Daten in MySQL auf einem Internet-Server verwalten..
Hallo Gerhard,
das ist jede Menge Code.... und einiges davon würde ich heute anders und besser schreiben....
Hier nur mal beispielhaft das CreateInsertStatement:
Für den anderen Code müsste ich das alles mal zusammenschreiben - da fehlt auch auf der PHP-Seite einiges, was ich heute definitiv anders und besser schreiben würde.
Wolfgang
das ist jede Menge Code.... und einiges davon würde ich heute anders und besser schreiben....
Hier nur mal beispielhaft das CreateInsertStatement:
Code: Select all
function CreateInsertStatement( cTable as string, aValues as array ) as string pascal
local cStatement as string
local nLen as dword
local nI as dword
local cField as string
local uValue as usual
local cValue as string
local cFields as string
local cValues as string
cStatement := "insert into " + cTable + " ( "
cFields := ""
cValues := ""
nLen := ALen( aValues )
for nI := 1 upto nLen
cField := aValues[nI,1]
uValue := aValues[nI,2]
do case
case IsString( uValue )
cValue := "'" + FixSQL( uValue ) + "'"
case IsNumeric( uValue )
cValue := StrTran( AllTrim( Str( uValue, 18, -1 ) ), ",", "." )
case IsDate( uValue )
if uValue == null_date
cValue := "null"
else
cValue := "'" + StrZero( Year( uValue ), 4, 0 ) + "-" + StrZero( Month( uValue ), 2, 0 ) + "-" + StrZero( Day( uValue ), 2, 0 ) + "'"
endif
case IsLogic( uValue )
cValue := IIf( uValue, "1", "0" )
endcase
if nI < nLen
cFields := cFields + cField + ", "
cValues := cValues + cValue + ", "
else
cFields := cFields + cField
cValues := cValues + cValue
endif
next
cStatement := cStatement + cFields + " ) values ( " + cValues + ")"
return cStatement
function FixSQL( cValue as string ) as string pascal
if InStr( "'", cValue )
cValue := StrTran( cValue, "'", "''" )
endif
return cValue
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
-
- Posts: 97
- Joined: Tue Mar 01, 2016 11:50 am
- Location: Germany
Daten in MySQL auf einem Internet-Server verwalten..
Hallo Wolfgang,
vielen Dank für die schnelle Antwort.
In der Hardcopy ist oInsert ein Objekt mit Methoden z.B. AddField() oder GetSQLString().
Grundsätzlich ist damit aber klar, wie das funktionieren soll. Ich werde mir dazu auch Objekte erstellen - das ist flexibler und der Code ist besser lesbar.
Vielen Dank für die Infos - werde das mal in dieser Richtung weiter testen.
Danke
Gerhard
vielen Dank für die schnelle Antwort.
In der Hardcopy ist oInsert ein Objekt mit Methoden z.B. AddField() oder GetSQLString().
Grundsätzlich ist damit aber klar, wie das funktionieren soll. Ich werde mir dazu auch Objekte erstellen - das ist flexibler und der Code ist besser lesbar.
Vielen Dank für die Infos - werde das mal in dieser Richtung weiter testen.
Danke
Gerhard
Daten in MySQL auf einem Internet-Server verwalten..
Hallo Gerhard,
ok, die entsprechenden Klassen findest Du als PRG hier: Die Funktion war kürzer....
Die Klassen decken aber nicht nur MySQL ab, sondern auch PostgreSQL und MS SQL (Oracle verwende ich in diesem Projekt nicht).
Wolfgang
ok, die entsprechenden Klassen findest Du als PRG hier: Die Funktion war kürzer....
Die Klassen decken aber nicht nur MySQL ab, sondern auch PostgreSQL und MS SQL (Oracle verwende ich in diesem Projekt nicht).
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
-
- Posts: 97
- Joined: Tue Mar 01, 2016 11:50 am
- Location: Germany
Daten in MySQL auf einem Internet-Server verwalten..
Hallo Wolfgang,
SUPER - Vielen Dank!!
Es fehlt nur die Funktion ParmSubst(..) für z.B.:
ParmSubst( "update %1 set ", cTableName ) + " "
Das wird wohl so etwas sein:
StrTran(cString, MC_STRING_MERGE_1, AsString(uPara1))
usw. für evtl. mehrere Parameter.
Nochmals VIELEN DANK!
Gerhard
SUPER - Vielen Dank!!
Es fehlt nur die Funktion ParmSubst(..) für z.B.:
ParmSubst( "update %1 set ", cTableName ) + " "
Das wird wohl so etwas sein:
StrTran(cString, MC_STRING_MERGE_1, AsString(uPara1))
usw. für evtl. mehrere Parameter.
Nochmals VIELEN DANK!
Gerhard
Daten in MySQL auf einem Internet-Server verwalten..
Hallo Gerhard,
diese Funktion habe ich sehr viel in Verwendung.... daher habe ich nicht dran gedacht:
Wolfgang
diese Funktion habe ich sehr viel in Verwendung.... daher habe ich nicht dran gedacht:
Code: Select all
function ParmSubst( cString )
//p Parameter (%1, %2, %3 usw.) in String ersetzen
//s
local cResult as string
local nLen as dword
local nI as dword
local cValue as string
local uValue as usual
nLen := dword( PCount() )
if nLen == 0 // keine Parameter
return ""
endif
if nLen == 1
return cString
endif
cResult := cString
// for nI := 2 upto nLen
for nI := nLen downto 2 // damit auch mehrstellige funktionieren
uValue := _GetFParam( nI )
do case
case IsString( uValue )
cValue := uValue
case IsNumeric( uValue )
cValue := AllTrim( BF( uValue ) )
case IsLogic( uValue )
cValue := IIf( uValue, ".t.", ".f." )
otherwise
cValue := AsString( uValue )
endcase
cResult := StrTran( cResult, "%" + NTrim( nI - 1 ), cValue )
next
return cResult
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
-
- Posts: 97
- Joined: Tue Mar 01, 2016 11:50 am
- Location: Germany
Daten in MySQL auf einem Internet-Server verwalten..
Hallo Wolfgang,
VIELEN DANK!
...eine fehlt noch.... ….die Funktion BF( uValue ).
DANKE
Gerhard
VIELEN DANK!
...eine fehlt noch.... ….die Funktion BF( uValue ).
DANKE
Gerhard
Daten in MySQL auf einem Internet-Server verwalten..
Hallo Gerhard,
auch wieder etwas länger - hatte mich gar nicht erinnert, dass ich die da drin hatte.
Ein ToString() tut es auch.
Wolfgang
auch wieder etwas länger - hatte mich gar nicht erinnert, dass ich die da drin hatte.
Ein ToString() tut es auch.
Code: Select all
function BF( nNumber, nInt, nDec )
local cRetValue as string
local cPicture as string
local nWNumber as float
local nWInt as int
local nWDec as int
local nCounter as dword
local nLen as dword
nWNumber := IIf( IsNumeric( nNumber ), nNumber, 0 )
nWInt := IIf( IsNumeric( nInt ), nInt, -1 )
nWDec := IIf( IsNumeric( nDec ), nDec, -1 )
if nWDec == -1 .and. Frac( Abs( nNumber ) ) < 0.001
nWDec := 0
endif
if nWDec == -1 .or. nWInt < 1 // feststellen Dezimal-Stellen und/oder Vorkomma-Stellen
cRetValue := wStr( nNumber, nWInt, nWDec )
nCounter := At( Chr( SetDecimalSep() ), cRetValue )
if nWDec == -1
if nCounter == 0
nWDec := 0
else
nWDec := Int( SLen( SubStr2( cRetValue, nCounter + 1 ) ) )
endif
endif
if nWInt < 1
if nCounter == 0
nWInt := Int( SLen( cRetValue ) )
else
nWInt := Int( nCounter - 1 )
endif
endif
cRetValue := ""
endif
nLen := dword( nWInt )
// Picture zusammenstellen
cPicture := ""
nCounter := dword( nWInt % 3 )
IF nCounter > 0
cPicture := Replicate( "9", nCounter )
nWInt -= Int( nCounter )
IF nWInt > 0
cPicture += ","
ENDIF
ENDIF
WHILE nWInt > 0
cPicture += Replicate( "9", 3 )
nWInt -= 3
IF nWInt > 0
cPicture += ","
ENDIF
END
IF nWDec > 0
cPicture += "." + Replicate( "9", dword( nWDec ) )
ENDIF
cRetValue := AllTrim( Transform( nWNumber, cPicture ) )
if SLen( cRetValue ) < nLen
cRetValue := PadL( cRetValue, nLen )
endif
return cRetValue
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
-
- Posts: 97
- Joined: Tue Mar 01, 2016 11:50 am
- Location: Germany
Daten in MySQL auf einem Internet-Server verwalten..
Hallo Wolfgang,
vielen Dank für die schnelle Unterstützung.
Da ist noch eine Funktion wStr( nNumber, nWInt, nWDec ) enthalten - ein normales Str(…) wird es da aber auch tun.
Gibt es bei der Übergabe per http eine maximale Länge für den String zur Verarbeitung mit PHP?
Nochmals vielen Dank!!
Gerhard
vielen Dank für die schnelle Unterstützung.
Da ist noch eine Funktion wStr( nNumber, nWInt, nWDec ) enthalten - ein normales Str(…) wird es da aber auch tun.
Gibt es bei der Übergabe per http eine maximale Länge für den String zur Verarbeitung mit PHP?
Nochmals vielen Dank!!
Gerhard