SQLite Insert - 0 erscheint aus dem Nichts

  • Hi Community,

    Ich habe mal wieder ein Problem.
    Wenn ich diese Funktion aufrufe, dann erscheint ein SQLite Fehler mit Jonas0, obwohl ich vorher die Variablen so zugewiesen habe:
    $hSocket = 426
    $sIP = 0
    $sName = "Jonas"

    [autoit]

    _SQLite_Exec($db,"INSERT INTO RegisteredClients VALUES ('"&$hSocket&"','"&$sIP&"','"&$sName&"','False','"-"','"-"','""');") ;Klappt nicht

    [/autoit]

    ! SQLite.au3 Error
    --> Function: _SQLite_Exec
    --> Query: INSERT INTO RegisteredClients VALUES ('572','0','Jonas0
    --> Error: unrecognized token: "'Jonas0"

    Die Funktion dazu:

    [autoit]

    Func _Server_Database_ClientAdd($hSocket,$sName) ;Creates persistant Info
    ConsoleWrite(@HOUR&":"&@MIN&":"&@SEC&" Client ADD "&$hSocket&@CRLF)
    $sIP = SocketToIP($hSocket)
    $ret = _SQLite_Exec($db,"INSERT INTO RegisteredClients VALUES ('"&$hSocket&"','"&$sIP&"','"&$sName&"','False','"-"','"-"','""');") ;Klappt nicht
    MsgBox(0,"",$ret&@CRLF&@error&@CRLF&@extended&@CRLF&"---"&@CRLF&"Socket="&$hSocket&@CRLF&"Name="&$sName&@CRLF&"IP="&$sIP)
    Return _Server_Database_ClientLogin($hSocket,$sName)
    EndFunc

    [/autoit]

    Aber wenn ich den Befehl einfach so ausführe, funktioniert er ?(

    [autoit]

    _SQLite_Exec($db,"INSERT INTO RegisteredClients VALUES ('568','0','Jonas','-','-','-','17:41');") ;Klappt

    [/autoit]

    Das ganze Script ist im Anhang.
    Ich hoffe ihr findet eine Lösung.

  • Hi,
    wenn du den Befehl "nicht falsch" von Hand eingibst, dann tritt auch kein Fehler auf, logisch...
    Wieso lässt du dir den String nicht einfach per Console oder Msgbox ausgeben und siehst dann sofort, wo das Problem liegt?!
    Dann ist die gesamte Fragerei und Posterei hinfällig, da du SOFORT siehst, was "falsch" ist.

    [autoit]

    _SQLite_Exec($db,"INSERT INTO RegisteredClients VALUES ('"&$hSocket&"','"&$sIP&"','"&$sName&"','False','"-"','"-"','""');") ;Klappt nicht

    [/autoit][autoit]

    _SQLite_Exec($db,"INSERT INTO RegisteredClients VALUES ('568','0','Jonas','-','-','-','17:41');") ;Klappt

    [/autoit][autoit]

    $hSocket = 426
    $sIP = 0
    $sName = "Jonas"
    MsgBox(0, "zusammen falsch", "'" & $hSocket & "','" & $sIP & "','" & $sName & "','False','" - "','" - "','""'")
    MsgBox(0, "einzeln falsch", "'" & $hSocket & "','" & @crlf & _
    $sIP & "','" & @crlf & _
    $sName & @crlf & _
    "','False','" - "','" - "','""'")
    ;aha...FALSE=0, stimmt, wird
    ;aber in deiner oberen Zeile falsch
    ;interpretiert, weil du die Anführungszeichen falsch setzt...
    ;sieht man in Scite übrigens schon im Quellcode, die waagrechten
    ;"Minuszeichen" sind rot, also Rechenzeichen statt, wie gewollt, Strings!

    [/autoit][autoit][/autoit][autoit]

    ;Anführungszeichen richtig gesetzt:
    Msgbox(0,"richtig"," '568','0','Jonas','-','-','-',' ")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]

    ergo:
    Anführungszeichen richtig setzen, dann wird auch der Code "richtig" ausgeführt!

    Btw, aus dem "Nichts" erscheint garnichts, du hast die 0 eindeutig hingeschrieben....

    [autoit]

    Msgbox(0,0,"False="&False)

    [/autoit]

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    3 Mal editiert, zuletzt von Andy (30. November 2013 um 09:16)

  • howdy...

    was er meint ist:

    mach hierraus:

    [autoit]

    _SQLite_Exec($db,"INSERT INTO RegisteredClients VALUES ('"&$hSocket&"','"&$sIP&"','"&$sName&"','False','"-"','"-"','""');")

    [/autoit]


    das:

    [autoit]

    _SQLite_Exec($db,"INSERT INTO RegisteredClients VALUES ('"&$hSocket&"','"&$sIP&"','"&$sName&"','False','-','-','');")

    [/autoit]


    oder

    [autoit]

    _SQLite_Exec($db,"INSERT INTO RegisteredClients VALUES ('" & $hSocket & "','" & $sIP & "','" & $sName & "','False','" & "-" & "','" & "-" & "','" & "');")

    [/autoit]

    aber übernehme es nicht einfach und gut.. sondern verstehe das >warum<!

    mfg
    sgtigram