Wo steckt der Fehler?
Fabi
- datenbank
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
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
'$description_url,
Hier fehlt ein '
Du solltest aber Strings immer vor der Übergabe mit mysql_real_escape_string escapen, um SQL-Injection zu vermeiden.
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
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";