Myql Update-Function

  • Ja brauche ja nicht lange dran rum reden. Tabelle erstellen ,Einträge suchen, und so klappt ja ,


    Für meinen Chat habe ich eine Online liste die wie bei whats app oder icq den Status anzeigen tut.Hatte das erst so gemacht das jede Aktion einen neuen Eintrag gemacht hat ,aber da hatte ich in ein Tag über 10.000 Einträge und das brauch kein Mensch.


    Jetzt habe ich die Aktionen aber erstmal halbiert das nicht mehr ganz so oft aktualiesiert wird.

    Aber egal.


    Ich will jetzt für jeden der Online ist einen Eintrag machen.

    Für jede Aktion soll der Eintrag geändert werden,

    1. time wo die Aktionszeit angezeigt wird.

    2 .message ,da stehen Texte drinne wie, hat sich eingeloggt ,ist tipping... und ,AFK ,oder hat sich ausgelogt.

    3. ON . wo ich zahlen zwischen 1-8 habe die ich zum sortieren brauche für spätere Aktionen.



    jetzt wollte ich das so versuchen zu ändern

    Code
    $query1 = "UPDATE chatlog SET message = $_POST['message'] , time = $_POST['time'], on = $_POST['on']  WHERE name = $suchwort";

    Jetzt nicht wieder rum meckern wegen SQL Injektion das ist in meinen Code schon bedacht ,das habe ich jetzt hier nur so gemacht um es einfacher zu sehen.


    $suchwort ist der name des users.

    habe keine Fehlercodes. zumindest nicht sichtbare.

    Weil es kam schon mal vor das die Fehler erst im Quelltext finden konnte.

    aber das hilft ja jetzt auch kein weiter


    PS : Happy Vatertag

  • wenn ich so mache

    Code
    $query1 = "UPDATE chatlog SET  message='$me' , time='$timestamp', on='$on'  WHERE name='$suchwort'";

    bekomme ich den Fehler

    Code
    MySQL-Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'on = '3'  WHERE name = '1'' at line 1

    Nur ehrlich gesagt weiß ich nicht was falsch ist . Lasse ich on weg ,geht der Fehler zwar weg aber übernimmt keine neue werte. die tabellen spalte on gibt ea auf jeden fall ,weil speichern und abrufen geht ja alles

  • Hey,


    Zitat

    Jetzt nicht wieder rum meckern wegen SQL Injektion das ist in meinen Code schon bedacht ,das habe ich jetzt hier nur so gemacht um es einfacher zu sehen.

    Wenn man sowas programmiert dann auch richtig und nicht erst so um es dann zu ändern. Also bitte benutze zu deiner Sicherheit, zur Sicherheit vor Datenlecks und zur Sicherheit deiner Besucher/Chatteilnehmer, Prepared Statements.


    Zu deinem Problem:


    Es können folgende Faktoren dafür verantwortlich sein:

    - $suchwort ist leer

    - falscher Spaltenname

    - Die ' ' umrum der Variablen



    Kannst du bitte den Codeschnipsel sowie den Inhalt von der Variable $suchwort hier in deinem nächsten Beitrag posten.


    Grüße,

    Stef

  • Was Stef sagt. Was wollen wir mit geändertem Code?


    Fehler ist ON.

    Das ist ein reserviertes Wort.

    Bsp: JOIN `tbl` AS `foo` ON (...)


    Also immer (und das sage ich auch immer wieder) die Table, Column, und Alias in `` stellen.


    Man sollte aber auch aussagekräftige Namen verwenden. "ON" Sagt mir nichts. Wenn es "online" sein soll, dann nenne es doch online.

  • Was Stef sagt. Was wollen wir mit geändertem Code?

    das ist ja nur eine liste wer gerade on ist und wen einer tippt steht dann user basti1012 ist tipping ,oder hat sich ausgelogt ,oder eingelogt .

    deswegen will ich zeit ,message ,und on(jetzt online) immer wechseln .

    Wie würdet ihr das den machen ?


    mein jetziger code sieht so aus und es ändert sich nix

    Code
    $query1 = "UPDATE chatlog SET  message='$message' , time='$timestamp', online='$online'  WHERE name='$user";

    die zeilen gibt es aufjedenfall weil erstellen geht ja.

    abfragen geht auch ( aber auch nicht richtig )

  • Einen Pseudo-Code zu posten, macht natürlich Sinn :(


    Eine eventuelle Fehlerüberprüfung sehen wir auch nicht. Ansonsten verkneife ich mir jeden weiteren Kommentar dazu, außer vielleicht der Frage; was sollen wir mir dem Code-Fetzen anfangen??

  • Ganz einfach

    was sollen wir mir dem Code-Fetzen anfangen??

    Kucken ob der Fetzen so richtig ist von der syntax und co.



    Weil den rest Code schliese ich mal aus ,weil wenn ich nur diese Zeile ändere in einen INSET fetzen speichert er ja alles.


    Selbst die Abfrage geht ja auch aus der db ,nur komischerweise zeigt er mehr einträge an als wie drinne sind

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!