Fabi: Wo steckt der Fehler?

Hi!

Ich habe ein Problem mit PHP und MySQL. Ich habe ein PHP-Script, das Daten in eine MySQL-Datenbank schreiben soll. Hier das Script:

  
<?php  
    error_reporting(E_ALL);  
    include "inc/config.php";  
  
    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());  
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());  
  
$name     = $_POST['name'];  
$year     = $_POST['year'];  
$description   = $_POST['description'];  
$description_url  = $_POST['description_url'];  
$rating    = $_POST['rating'];  
$type     = $_POST['type'];  
$length    = $_POST['length'];  
  
  $sql = "INSERT INTO movies  
                          (name, year, description, description_url, rating, type, length)  
                  VALUES  
                          ('$name',  
                           '$year',  
                           '$description',  
      '$description_url,  
      '$rating',  
      '$type',  
      '$length')";  
  
    $result = mysql_query($sql) OR die(mysql_error());  
?>  

Hier die HTML-Datei:

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
  
<html>  
<head>  
 <title>Untitled</title>  
  
</head>  
  
<body>  
<form action="insert_movie.php" method="post">  
 <label for="name">name: </label> <input type="text" size="25" maxlength="255" name="name"><br>  
 <label for="year">year: </label> <input type="text" size="25" maxlength="255" name="year"><br>  
 <label for="description">description: </label> <input type="text" size="25" maxlength="255" name="description"><br>  
 <label for="description_url">description_url: </label> <input type="text" size="25" maxlength="255" name="description_url"><br>  
 <label for="rating">rating: </label> <input type="text" size="25" maxlength="5" name="rating"><br>  
 <label for="type">type: </label> <input type="text" size="25" maxlength="255" name="type"><br>  
 <label for="length">length: </label> <input type="text" size="25" maxlength="255" name="length"><br>  
 <input type="submit" value="abschicken">  
</form>  
  
</body>  
</html>  

Die Fehlermeldung ist:

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 'aaaa', 'Comedy', '95 Minuten')' at line 7

Thx für eure Hilfe. Ich hoffe ihr wisst woran es liegt.
Thx...Fabi

  1. hi,

    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 'aaaa', 'Comedy', '95 Minuten')' at line 7

    Mache bitte eine Kontrollausgabe deines Query-Strings ($sql).

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. '$description_url,

    Hier fehlt ein '

    Du solltest aber Strings immer vor der Übergabe mit mysql_real_escape_string escapen, um SQL-Injection zu vermeiden.

    1. Hi.

      '$description_url,

      Hier fehlt ein '

      Ach, ja klar. Danke.

      Du solltest aber Strings immer vor der Übergabe mit mysql_real_escape_string escapen, um SQL-Injection zu vermeiden.

      Was macht diese Funktion? Was ist eine SQL-Injection?

      Thx. Fabi

      1. echo $begrüßung;

        Du solltest aber Strings immer vor der Übergabe mit mysql_real_escape_string escapen, um SQL-Injection zu vermeiden.

        Was macht diese Funktion?

        Das PHP-Handbuch kennst du? mysql_real_escape_string

        Ansonsten gib doch mal einen Namen ein, der ein ' enthält, z.B. O'Conner.

        Was ist eine SQL-Injection?

        Siehe Handbuch-Kapitel [http://de.php.net/manual/en/security.database.php@title=Database Security].
        Auch das Kapitel Magic Quotes ist in dem Zusammenhang nicht uninteressant.

        $name     = $_POST['name'];
        $year     = $_POST['year'];

        usw.

        Solche Umkopieraktionen sind überflüssig. Du kannst genauso gut an den Stellen, an denen du den Wert haben möchtest, direkt auf $_POST['name'] zugreifen.

        echo "$verabschiedung $name";