Ergebnis 1 bis 7 von 7

Thema: .

  1. #1

    .

    .

    Geändert von Merovinger (03.07.2021 um 09:46 Uhr)

  2. #2
    Auf die schnelle erkenne ich da keinen Fehler, aber gibt dir doch mal $sql aus und versuche mit einem Abfrageprogramm (phpMyAdmin oder den QueryBrowser, falls es den noch gibt [MySQL-Software]) den Fehler zu finden.
    Mit Syntax-Highlighting sollte das einfacher sein als mit einer formatierten PHP-Codeausgabe.

    Eventuell enthält $link ein unescaptes '?

  3. #3
    INSERT ... SET? Das ist nicht sehr häufig zu sehen und ich würde von dem Konstrukt abraten, weil es von MySQL eher schlecht dokumentiert wurde. (Nebenbei habe ich es auch nicht zum Laufen gebracht, wenn mehr als ein Parameter übergeben wurde.) Die meisten Leute verwenden INSERT ... VALUES:
    Code:
    INSERT INTO `Datenbank`.`Tabelle` (`spalte1`, `spalte2`, `spalte3`, `spalte4`)
        VALUES ('Wert1', 'Wert2', 'Wert3', 'Wert4');
    
    -- Wenn du sämtliche Spalten der neuen Tabellenzeile füllen willst, kannst du
    -- die erste Klammer auch weglassen
    INSERT INTO `Datenbank`.`Tabelle`
        VALUES ('Wert1', 'Wert2', 'Wert3', 'Wert4');

    Nebenbei, PHP ersetzt Variablen in Strings mit doppeltem Anführungszeichen. Statt...
    PHP-Code:
    $bla "Bla bla ".$foo." bla"
    ...kanst du auch folgendes schreiben:
    PHP-Code:
    $bla "Bla bla $foo bla"
    Wenn dein Variablenname direkt von weiteren Buchstaben oder Zahlen gefolgt wird (oder ein Array-Index ist), solltest du geschweifte Klammern verwenden:
    PHP-Code:
    $bla "Bla ${foo}bla";
    $blubb "Blubb ${knurd[6]}"
    Diese Ersetzung funktioniert nicht mit Funktionen und dergleichen. In Strings mit einfachen Anführungszeichen findet keine Ersetzung statt.

  4. #4
    Zitat Zitat von Merovinger Beitrag anzeigen
    hab meinen fehler gefunden...
    fehler war $link
    ich hatte an $link noch ein ' rangehängt -.-
    Du übergibst unsanitisierte Variablen an SQL? Happy injection time!

  5. #5
    Ich spreche von Maßnahmen wie mysql_escape_string. Damit dir nicht das passiert.

  6. #6
    Zitat Zitat von Jesus_666 Beitrag anzeigen
    Ich spreche von Maßnahmen wie mysql_escape_string. Damit dir nicht das passiert.
    Ich rate lieber zu mysql_real_escape_string, da hier auch die aktuelle Zeichenkodierung berücksichtigt wird. Das ist vor allem dann nett, wenn man mit PHP 5.2.3+ arbeiten kann, da dann auch mysql_set_charset zur Verfügung steht.

  7. #7
    Wenn wir von idealen Funktionen sprechen würde ich eh zu mysqli->real_escape_string raten. Die mysqli-Erweiterung ist der alten mysql-Erweiterung voraus; man muß nur sicherstellen, daß der Hoster sie auch unterstützt.

    Mit mysqli kriegst du auch lustige Funktionen wie mysqli->prepare/mysqli->stmt_bind_param, mit denen du Typsicherheit in deine Abfrage kriegst. Und Unterstützung für Transaktionen und Rollbacks. Und allgemein Unterstützung für MySQL-Features, die neuer sind als Oktober 2004.

    Geändert von Jesus_666 (18.11.2007 um 12:07 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •