Fehler beim schreiben eines Datensatzes

  • VB.NET

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von 0luca0.

    Fehler beim schreiben eines Datensatzes

    Moin Moin :)

    Sieht jemand bei dem folgendem Mysql-Query einen Fehler?

    SQL-Abfrage

    1. INSERT INTO `odds` (`league_id`,`fixture_id`,`home-odd`,`away-odd`,`draw-odd`) VALUES ('1718','679202679','3.8','2.26','3.08') ON DUPLICATE KEY UPDATE league_id='1718',fixture_id='679202679',home-odd='3.8',away-odd='2.26',draw-odd='3.08'

    Es ist kein Fehler am sonstogen Code.. Es kommt von der Datenbank die Rückmeldung, etwas sei am Query falsch:
    ​{"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 '-odd=3.8,away-odd=2.26,draw-odd=3.08' at line 1"}


    Die Struktur:


    Ich sehe einfach nicht was da das Problem ist..

    LG
    Ich würde Sagen der Name der Spalten. Mach aus dem Bindestrich jeweils nen Unterstrich und es sollte Funktionieren.
    Post-AGB:
    §1 Mit dem Lesen dieses Posts stimmst du den AGB unverzüglich zu
    §2 Ein Widerruf muss innerhalb von 3 Sekunden nach Lesen des Hauptbestandteil des ersten jemals gelesenen Posts erfolgen
    Abs.1 Die Signatur zählt nicht zum Hauptbestandteil des Posts
    §3 Ein erfolgreicher Widerruf zwingt zu einem Besuch bei einem Hypnotiseur oder Neurochirurg, sodass der gelesene Text aus den Erinnerungen entfernt werden kann
    Abs.1 Die Kosten und Risiken sind jeweils selbst zu tragen

    EaranMaleasi schrieb:

    Ich würde Sagen der Name der Spalten. Mach aus dem Bindestrich jeweils nen Unterstrich und es sollte Funktionieren.

    Meinst du? Ich konnte sie ja mit dem Bindestrich in phpmyadmin auch problemlos erstellen? Dürfte das dann phpmyadmin nicht auch nicht erlauben?

    vb_fan schrieb:

    Muessten diese Felder, wie home-odd, etc nicht in '' stehen? Wie am Anfan der Query. So sind sie doch keine gueltigen Namen.

    Sie müssten wenn in Gravis(`) stehen, aber das geht auch ohne, solange man keine reservierten Namen des Mysql Syntax nimmt..
    EDIT: Ich habe es mal probiert und es ging dann in der tat.. Das verstehe ich jetzt aber nicht ganz.. Problem ist zwar gelöst, aber würde mich jemand aufklären, welcher Begriff ein reservierter ist?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „0luca0“ ()

    0luca0 schrieb:

    Ich konnte sie ja mit dem Bindestrich in phpmyadmin auch problemlos erstellen?
    Die MySQL Workbench lässt das ebenfalls zu, scheint auch an und für sich nicht verboten zu sein, doch ich denke die geringeren Kopfschmerzen hat man definitv ohne Bindestriche im Spaltennamen

    ErfinderDesRades schrieb:

    aber ich denke, er wird das als Subtraktion verstehen.
    Jep, der Meinung bin ich auch. Anstatt home-odd als eine Spalte zu verstehen, versucht MySQL dann die Spalte odd von home abzuziehen, was alleine daran schon scheitert, dass es die Spalten überhaupt nicht gibt.
    Post-AGB:
    §1 Mit dem Lesen dieses Posts stimmst du den AGB unverzüglich zu
    §2 Ein Widerruf muss innerhalb von 3 Sekunden nach Lesen des Hauptbestandteil des ersten jemals gelesenen Posts erfolgen
    Abs.1 Die Signatur zählt nicht zum Hauptbestandteil des Posts
    §3 Ein erfolgreicher Widerruf zwingt zu einem Besuch bei einem Hypnotiseur oder Neurochirurg, sodass der gelesene Text aus den Erinnerungen entfernt werden kann
    Abs.1 Die Kosten und Risiken sind jeweils selbst zu tragen

    Neu

    ErfinderDesRades schrieb:

    na,

    SQL-Abfrage

    1. home-odd
    ist nicht eiglich ein reserviertes Wort, aber ich denke, er wird das als Subtraktion verstehen.

    daran habe ich ja gar nicht gedacht.. :whistling: Danke euch!

    ErfinderDesRades schrieb:

    Und noch was - viel wichtiger: Sql-Injection

    Ich weiss ich weiss :) Ist eine lokale Datenbank, keine Sorge.. Sonst würde ich das auch mittels PHP-Skript lösen.