wie kann ich eine leerzeile in einer txt am ende der einträge entfernen?
Ich versteh nicht, was du damit meinst. Das hat jetzt aber nichts mehr mit MySQL zu tun oder?
wie kann ich eine leerzeile in einer txt am ende der einträge entfernen?
Ich versteh nicht, was du damit meinst. Das hat jetzt aber nichts mehr mit MySQL zu tun oder?
nein, hat nichts mit mysql zu tun nur mit dem verarbeiten einer txt in mysql ...
habe es aber jetzt so gemacht, das ich die letzte zeile einfach beim schleifendurchlauf weglasse!
also:
[autoit]For $x = 2 to $aRecords[0] -1
[/autoit]gruß gmmg
Oder du machst als erste Zeile in deine Schleife so was:
[autoit]For $x = 1 to $aRecords[0]
If Not StringStripWS($aRecords[$x], 3) Then ContinueLoop ; Zeilen, die nichts oder nur leerzeichen enthalten überspringen
; weiterer Code
Next
hallo progandy,
danke für die info!
die letzte zeile der textdatei ist nicht leer, sondern enthält ein zeichen (kleines viereck)! denke mal es ist irgendein steuerzeichen ...
[autoit]
20100310;"TRAFFIC";"TRAF";;10445;"4513787";2;;0;20100407;"BiV";"DÜXXH";"";;
hab die txt mal angehangen!
hab hier einen lösungsansatz gefunden
nimm Dir einen Hex-Editor, ermittle den Zeichencode des kleinen Vierecks, lese die Datei in eine Zeichenkette ein, ermittle mit der Instr-Funktion die Position des kleinen Vierecks, verwende die Mid-Funktion, um die Zeichenkette hinter dem Viereck zu erhalten, speichere die Daten zurück und starte den Import.
-->
Das kleine Viereck ist ein Textumbruchzeichen <tt>Chr(10)</tt> oder <tt>Chr(13)</tt>
gruß gmmg
Hallo Progandy
hab ein kleines verständnisproblem!
ich lese nach dem muster (siehe vorherige posts) eine textdatei in ein array!
diesen splitte ich und stelle dann aus den einzelnen array werten eiinen string!
quelltextabschnitt ..
[autoit]
For $x = 1 to $aRecords[0]
;MsgBox(0,"",$aRecords[$x])
; string formatieren ...
$s_Row_txt_t1 = StringSplit($aRecords[$x], ",") ; den Record in die einzelnen Felder teilen
$s_Row_txt = '' ; Variable füe gesamten Text leeren
;~ For $i = 1 To $s_Row_txt_t1[0] ; für jedes Feld Befehle ausführen
;~ $s_Row_txt_t1[$i] = _MySQL_Real_Escape_String($MysqlConn, $s_Row_txt_t1[$i]) ; Feldinhalt MySQL-sicher machen
;~ $s_Row_txt &= "'" & $s_Row_txt_t1[$i] & "' ," ; an des Gesamttext ein Anführungszeichen , den gesicherten Text, ein Anführungszeichen und ein Komma anhängen
;~ ;MsgBox(0,"",$s_Row_txt)
;~ Next
;~ $s_Row_txt = StringTrimRight($s_Row_txt, 1) ; Das letzte Komma vom Gesamtstring entfernen
; zusammengestellter string
$z_string = ("'" & $s_Row_txt_t1[85] & "','" & $s_Row_txt_t1[86] & "','" & $s_Row_txt_t1[64] & "','" & $s_Row_txt_t1[87] & _
"','" & $s_Row_txt_t1[88] & "','" & $s_Row_txt_t1[89] & "','" & $s_Row_txt_t1[90] & "','" & $s_Row_txt_t1[92] & _
"','" & $s_Row_txt_t1[93] & "','" & $s_Row_txt_t1[99] & "','" & $s_Row_txt_t1[100] & "','" & $s_Row_txt_t1[101] & _
"','" & $s_Row_txt_t1[102] & "','" & $s_Row_txt_t1[103] & "','" & $s_Row_txt_t1[105] & "'")
$z_string = StringReplace($z_string,'"', '')
[/autoit][autoit][/autoit][autoit];ConsoleWrite($z_string)
MsgBox(0,"",$z_string)
;formatierter string
'16.03.2010','10:15','1000','1','1','00:00:06','00:00:06','0','0','0','0','00:00:00','00:00:00','0','00:03:52'
[/autoit][autoit][/autoit][autoit][/autoit]wie mache ich den string jetzt MySQL-sicher?
geht folgendes?
$z_string = _MySQL_Real_Escape_String($MysqlConn,$z_string)
danke für eure antworten ...
gruß gmmg
Du musst EscapeString für jeden einzelnen Eintrag aufrufen, also:
[autoit]("'" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[85]) & "','" & _MySQL_Real...
[/autoit]das ging ja schnell
zum glück sind es nur 14 einträge!
ich hätte gedacht, mann stellt sich den string zusammen und macht den danach myql sicher!
kann man überhaupt testen, ob ein string mysql sicher ist?
danke
gruß gmmg
Den kompletten String auf einmal abzusichern geht leider nicht. Der String wird so gesichert, dass der komplette String in sich in der MySQL-Anweisung neutral verhält und damit den Wert von einem Feld darstellt. So wird z.B. das Anführungszeichen maskiert, sodass es den String nicht beendet und nachfolgende zeichenfolgen nicht als MySQL-Befehl gewertet werden. Wenn aber mehrere Felder befüllt werden sollen, muss jedes einzelne Feld für sich gesichert werden.
hab es jetzt so gemacht, passt aber nicht ... es kommt eine syntax fehlermeldung!
$z_string = ("'" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[85]) & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[86]) & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[64]) & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[87]) & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[88] & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[89] & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[90] & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[92] & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[93] & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[99] & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[100] & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[101] & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[102] & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[103] & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[105] & "'")
ERROR: syntax error
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[105] & "'")
einige klammerfehler beseitigt, funktioniert trotzdem noch nicht ...
[autoit]
$z_string = ("'" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[85]) & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[86]) & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[64]) & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[87]) & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[88]) & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[89]) & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[90]) & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[92]) & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[93]) & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[99]) & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[100]) & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[101]) & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[102]) & "','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[103]) & _
"','" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[105]) & "'")
fehler:
ERROR: _MySQL_RealEscapeString(): undefined function.
$z_string = ("'" & _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[85])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
der abschnitt _MySQL_RealEscapeString($MysqlConn, $s_Row_txt_t1[85]) muss aber nicht in die query bei values
die query funktioniert aber auch ohne das sichermachen, aber ist ja nicht so gut ...
gruß gmmg
ICh kann die Funktionen nicht ganz auswendig und hab ein paar Unterstriche vergessen: _MySQL_Real_Escape_String
danke für deine hilfe!
es funktioniert jetzt ...
es lag an der "_MySQL_Real_Escape_String()" die war falsch geschrieben!
mir ist es aber auch nicht aufgefallen ...
kann man das auch direkt hier machen:
[autoit]
Local $sQuery = "UPDATE tab_vorgang SET `UMSATZEUR` = '" & $s_Row_txt_t1[2] & "',`STdatum` = '" & $s_Row_txt_t1[4] & _
"' WHERE `xNr` = '" & $s_Row_txt_t1[1] & "'"
Local $sQuery = "UPDATE tab_vorgang SET `UMSATZEUR` = '" & _MySQL_Real_Escape_String($s_Row_txt_t1[2]) & _
"',`STdatum` = '" & _MySQL_Real_Escape_String($s_Row_txt_t1[4]) & _
"' WHERE `xNr` = '" & $s_Row_txt_t1[1] & "'"
;-----
[/autoit][autoit][/autoit][autoit][/autoit]geht das so auch wie im zweiten beispiel?
gruß gmmg
Alles anzeigendanke für deine hilfe!
es funktioniert jetzt ...
es lag an der "_MySQL_Real_Escape_String()" die war falsch geschrieben!
mir ist es aber auch nicht aufgefallen ...kann man das auch direkt hier machen:
[autoit][/autoit] [autoit][/autoit] [autoit]
Local $sQuery = "UPDATE tab_vorgang SET `UMSATZEUR` = '" & $s_Row_txt_t1[2] & "',`STdatum` = '" & $s_Row_txt_t1[4] & _
"' WHERE `xNr` = '" & $s_Row_txt_t1[1] & "'"Local $sQuery = "UPDATE tab_vorgang SET `UMSATZEUR` = '" & _MySQL_Real_Escape_String($s_Row_txt_t1[2]) & _
[/autoit] [autoit][/autoit] [autoit]
"',`STdatum` = '" & _MySQL_Real_Escape_String($s_Row_txt_t1[4]) & _
"' WHERE `xNr` = '" & $s_Row_txt_t1[1] & "'";-----
[/autoit] [autoit][/autoit] [autoit][/autoit]
geht das so auch wie im zweiten beispiel?
gruß gmmg
hallo,
kann man das so wie im zweiten beispiel machen?
gruß gmmg
Wenn xNr eine Zahl ist, solltest du Number() verwenden und keine Anführungszeichen
[autoit]"WHERE `xNr` = " & Number($s_Row_txt_t1[1])
[/autoit]hallo progandy
ok, mit Number!
und komplett so oder?
[autoit][/autoit][autoit][/autoit][autoit]Local $sQuery = "UPDATE tab_vorgang SET `UMSATZEUR` = '" & _MySQL_Real_Escape_String($s_Row_txt_t1[2]) & _
"',`STdatum` = '" & _MySQL_Real_Escape_String($s_Row_txt_t1[4]) & _
"' WHERE `xNr` = " & Number($s_Row_txt_t1[1])
gruß gmmg
Ja. Je nachdem was UMSATZEUR ist, kannst du eventuell auch hier Number verwenden. Das kommst allerdings auf deine Daten an
ok, danke für deine info!
gruß gmmg
@ progandy
bin gerade auf ein problem gestossen!
wie kann ich einen fehler ausgeben,wenn es beim verarbeiten der _MySQL_Real_Query($MysqlConn, $sQuery) einen fehler gibt?
z.b. feldtypen passen nicht u.a.
danke im voraus
gruß gmmg
danach musst du mit _MySQL_Error($MysqlConn) bzw. _MySQL_Errno($MysqlConn) den Fehler auslesen
ich hab es jetzt mal so in das script eingebaut!
scriptauschnitt -->
_MySQL_Real_Query($MysqlConn, $sQuery)
If @error <> 0 Then MsgBox(0,"",$x & " / " & $sQuery)
hier liefert mir @error den wert 0 zurück, wenn alles ok ist
das werde ich aber nochmal mit fehlerhaften werten prüfen ...
gruß gmmg