Formulardaten speichern sich nicht in die Datenbank

Stephan Liebig

Erfahrenes Mitglied
Ich habe ein kleines Formular mit Daten, die ich gerne in meine mysql Datenbank speichern möchte. Allerdings sagt mir mein SQL Ausdruck immer, dass der Eintrag nicht gespeichert werden konnte.

Mein Formular:
PHP:
<?php
	if($_SESSION['logged_in']) 
	{
		if(isset($_POST['submit']))
		{
			include("./include/savenewdvd.inc.php");
		}
		else
		{
			echo '<form action="index.php?view=adddvd" method="post">';
			echo '<div class="headline1">Neuen Film eintragen</div>';
			echo 'Filmname:<br />';
			echo '<input name="title" type="text" size="50"><br />';
			echo 'Kategorie: <br />';
			echo '<select name="category" size="1">';
				echo '<option selected>Bitte w&auml;hlen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</option>';
				echo '<option value="Kom&ouml;die">Kom&ouml;die</option>';
				echo '<option value="Actionfilm">Actionfilm</option>';
				echo '<option value="Liebesfilm">Liebesfilm</option>';
				echo '<option value="Horrorfilm">Horrorfilm</option>';
				echo '<option value="Erotik">Erotik</option>';	
				echo '<option value="Dokumentation">Dokumentation</option>';
				echo '<option value="Thriller">Thriller</option>';
				echo '<option value="Fantasy">Fantasy</option>';
				echo '<option value="Heimatfilm">Heimatfilm</option>';
			echo '</select><br />';
			echo 'Deine Bewertung:<br />';
			echo '<select name="judge" size="1">';
				echo '<option selected>Bitte w&auml;hlen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</option>';
				echo '<option value="5">5 - sehr gut</option>';
				echo '<option value="4">4 - gut</option>';
				echo '<option value="3">3 - es geht</option>';
				echo '<option value="2">2 - schlecht</option>';
				echo '<option value="1">1 - sehr schlecht</option>';
				echo '<option value="0">0 - noch nicht gesehen</option>';
			echo '</select><br />';
			echo 'Zusammenfassung:<br />';
			echo '<textarea name="summary" cols="38" rows="20"></textarea>';
			echo '<br />';
			echo '<input name="submit" type="submit" value="Speichern">';
			echo '</form>';
		}
	}
?>

Speichern:

PHP:
<?php
	if($_SESSION['logged_in']) 
	{
			
			echo error_reporting(E_ALL);
			
			
			include './include/config.inc.php';

			if(!$connection = mysql_connect($_config['dbhost'], $_config['dbuser'], $_config['dbpass']))
				die('Verbindung zum Datenbankserver konnte nicht hergestellt werden.');
		
			if(!mysql_select_db($_config['dbname'], $connection))
				die ('Die Datenbank '.$_config['dbname'].' kann nicht verwendet werden. <br />MySQL-Error: <br />'.mysql_error());
		
		
			$sql = "SELECT surname FROM user WHERE id = '".$_SESSION['id']."'";
			$result = mysql_query($sql);
			$poster = mysql_fetch_assoc($result);
			
			$group = $_POST['title'];
			$pub_date = date("Y-m-d");
			
			echo 'Gruppe: '.$group.'<br />';
			echo 'Title: '.$_POST['title'].'<br />';
			echo 'Kategorie: '.$_POST['category'].'<br />';
			echo 'Jugde: '.$_POST['judge'].'<br />';
			echo 'Zusammenfassung: '.$_POST['summary'].'<br />';
			echo 'Poster: '.$poster['surname'].'<br />';
			
			
			
		    if(mysql_query("INSERT INTO
 					dvd_list
 					(group,
 					title,
					category,
					date,
					judge,
					summary,
 					poster) 
					VALUES
 					('".$group[0]."',
 					'".$_POST['title']."',
					'".$_POST['category']."',
					'".$pub_date."',
					'".$_POST['judge']."',
					'".$_POST['summary']."',
 					'".$poster['surname']."'
					)
					") ) {
                        echo "<br>Film wurde erfolgreich in die Datenbank &uuml;bernommen.";
                        echo '<br /><a href="index.php?view=dvdlist">zur&uuml;ck zur Liste</a>';
                } 
                else {
                        echo ("<br>Film konnte nicht in die Datenbank aufgenommen werden!");
                        echo '<br /><a href="index.php?view=adddvd">zur&uuml;ck zur Eingabe</a>';
                }
	}
?>

Sieht jemand meinen 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 'group, title, category, date, judge, summary, poster) VALUES (H, Hitman, A' at line 1

Hilft mir persönlich jetzt aber nicht weiter.
 
Die Aussage: :suspekt:
ja aber vielleicht mir damit ich dir helfen kann oO
Ausserdem solltest du lernen richtig zu debuggen und diese Fehler dann auch selbstständig beheben können.

Nun zurück zu deinem Script:
Dein Insert Query entspricht nicht der korrekten MySQL Syntax das sagt der Fehler.
Versuch mal diesen Insert Query:
PHP:
mysql_query("INSERT INTO `dvd_list` SET 
                     `group` = '".$group[0]."', 
                     `title` = '".$_POST['title']."', 
                     `category` =  '".$_POST['category']."', 
                     `date` =  '".$pub_date."', 
                     `judge` =  '".$_POST['judge']."',
                     `summary` = '".$_POST['summary']."', 
                     `poster` =  '".$poster['surname']."';")
 
ummantel die Variablen in dem query mal mit mysql_real_escape_string....

Es kann sein das ich falsch liege, womöglich ist aber auch beides möglich...
verwendet man bei insert nicht immer :
insert into table (feld1, feld2) values (wert1, wert2)
und bei update
set feld = wert...
 
Zuletzt bearbeitet:
Mir ging es mehr um die ` Zeichen die fehlten,
Gehen tun beide Stile ich finde den angenehmer und afaik ist der auch aktueller.
Hab irgendwo mal gehört dass es veraltet sei.
mysql_real_escape_string() ist im übrigen auch ratsam
 
Es geht nicht darum, ob (keine) Backticks aktuell, verwaltet oder sonst etwas sind, viel mehr um sinnvolle Datenbanklayouts.
Denn ist die Datenbank von vorn herein sinnvoll aufgebaut und enthält keine Spaltennamen wie "group" oder "alter", ist die Benutzung von Backticks schlicht überflüssig, weshalb man sie auch so selten antrifft.
Verwendet man jedoch solche Spaltennamen, kommt man um Backticks nicht drum rum.

R00Ki3,
Der Syntax des Update-Befehls geht auch bei Inserts.
Habe ich vor längerer Zeit, beim basteln einer MySQL-Klasse, auch überraschend festgestellt. :)
 
Zuletzt bearbeitet:
Zurück