INSERT INTO schlägt fehl - Error 1064

  • Hallo Leute,
    ich bin momentan dabei mir meine eigene Homepage zu coden und bin relativ neu im Gebiet PHP, was über Grundgerüste hinausgeht.
    Ich möchte meinen Redakteuren in einem Backend die Möglichkeit geben eine Datei hochzuladen. Irgendwie will das aber nicht klappen und ich versteh einfach nicht wieso.

    Kurze Erklärung zu meinem Script unten:

    Der User bekommt ein Formular, wo er den Namen für die Übersicht, die Kategorie, einen externen Link eingeben oder eine Datei hochladen kann.
    Der Weg "Name, Kategorie, ext Link" klappt und wird erfolgreich in die Datenbank geschrieben, aber der Weg mit dem Dateiupload klappt leider nicht.

    Das Script soll die Datei erstmal auf den Server in ein bestimmtes Verzeichnis (je nach Kategorie) laden und den gleichen Namen haben, wie auf dem PC des users. Dann soll er genau diesen Pfad mit den anderen Formular-Feldern (ext Link bleibt dabei leer) in das Feld "Download" der Datenbank packen und zwar als Link (siehe $dateilink).

    Mal ganz abgesehen davon, dass die Datei nicht in mein gewünschtes Verzeichnis geladen wird, klappt aber der Datenbankeintrag nicht.
    Denn der sollte ja trotzdem funktionieren, da das Script ja nicht abbricht, sollte der move-Befehl nicht funktionieren.


    Jetzt aber zum Script (DB Passwort etc. wurden im original Script natürlich angepasst):


    Das Formular:


    Und der Fehler beim Absenden des Dokuments, der dann angeblich bei der Variable $dateilink wäre:

    Code
    1064 ------------ You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''>Download')' at line 1


    Ich wette es ist irgendetwas total banales und ich bin einfach zu blind es zu sehen...
    Hoffe ihr könnt mir helfen und danke schonmal im Voraus!


    Gruß
    Sky

  • Dein Insert mal teilweise aufgelöst:

    VALUES ('$name', '$category', '$link', '<a href=' " . $uploadverzeichnis . " '>Download</a>')";

    Da sollte dir was auffallen! Und deshalb gibt es die schöne Funktion mysql_real_escape_string, die man sowieso immer anwenden sollte, damit da keine bösen Sachen in die Abfragen reinrutschen können.

  • Ah danke!
    Den Befehl kannte ich noch nicht!
    Hab den Fehler jetzt wegbekommen, aber er gibt mir nun folgenden Fehler:

    Code
    1062 ------------ Duplicate entry '' for key 'Link

    Aber es sind ja nur zwei Einträge weil ich mit ifs arbeite oder hab ih was übersehen?
    Wäre nett wenn du/ihr mir da nochmal helfen könnte(s)t.
    Danke!


    Gruß Sky

  • Danke für die Hilfe.
    Hatte total vergessen, dass ich dem Feld einen Index gegeben hatte.
    Danach kam noch ein Fehler auf, aber den konnte ich zum Glück selber lösen.

    Vielen Dank für die Funktion mysql_real_escape_string .
    Das wurde in meinem PHP-Buch gar nicht angesprochen.


    Viele Grüße
    Sky