kostenloser Webspace werbefrei: lima-city


php sql problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    aklasse

    Kostenloser Webspace von aklasse

    aklasse hat kostenlosen Webspace.

    Hi Leute, ich finde den Fehler in der folgenden query einfach nicht:

    $result = mysqli_query($link,"UPDATE blog SET day='".$_POST['day']."' month='".$_POST['month']."' year='".$_POST['year']."' h='".$_POST['h']."' m='".$_POST['m']."' content='".$_POST['content']."' title='".$_POST['title']."' comment='".$_POST['comment']."' WHERE id='".$id."'");


    Fehler:

    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 'month='8' year='2011' h='12' m='26' content='In meinem Blog möchte ich Allerlei' at line 1

    Könnte mir jemand auf die Sprünge helfen?

    Vielen Dank!

    Liebe Grüße,
    Stefan
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hey ;)

    Kurz um: Dein Problem ist ein SQL Syntaxproblem. Es fehlen die Kommas (,) zwischen den Werten.
    Siehe -> http://www.w3schools.com/php/php_mysql_update.asp
    UPDATE table_name
    SET column1=value, column2=value2,...
    WHERE some_column=some_value


    Tipp #1:
    Die Fehlermeldung sagt so etwas wie: "Dein Problem beginnt irgendwo bei 'month='8' ..." Das ist ein Hinweis dafür, dass davor alles passt. nach day="" benötigst du also ein Komma.

    Tipp #2:
    Mach in deine Zeile des SQL-Befehls Zeilenumbrüche. Das macht es nicht nur übersichtlicher für dich beim Programmieren, sondern die Fehlermeldung gibt dir dann auch an, in welcher Zeile der Fehler genau ist. "at line 1" in deinem Fall bringt dir gar nichts. Wenn du dein Statement mit Zeilenumbrüche schön in Abschnitte unterteilst, kann das sehr hilfreich sein.

    Tipp #3:
    Du arbeitest mit mysqli. Warum verwendest du (aus Sicherheitsgründen) nicht gleich Prepared Statements? Anleitungen wie das geht findest du wie Sand am Meer ;)
    In deinem Fall kann man leicht eine SQL Injection einfügen.

    Auch auf der PHP.net Seite wird darauf hingewiesen:
    http://php.net/manual/en/mysqli.query.php
    mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
    (...)
    Parameter: query
    The query string.
    Data inside the query should be properly escaped.


    Also wenn du keine Prepared Statements verwenden willst, solltest du zumindest die POST-Parameter ordentlich escapen.

    lg
    Sincer

    Beitrag zuletzt geändert: 3.10.2011 18:34:59 von sincer
  4. Autor dieses Themas

    aklasse

    Kostenloser Webspace von aklasse

    aklasse hat kostenlosen Webspace.

    Vielen Dank! Da es in diesem Fall nur um ein Admin Tool geht das ich selbst bediene hat die Sicherheit keine Priorität (daher auch so unsauber), aber vielen Dank für den Hinweis!

    Vielen Dank für die vielen Tipps!

    Liebe Grüße,
    Stefan
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!