PhpMyAdmin - Fehlermeldung #1064

Leopold_Schefcik

Grünschnabel
Kann mir bitte jemand helfen, was aufgrund dieser Fehlermeldung an der Syntax falsch ist?

MySQL meldet:


#1064 - 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
'(50) NOT NULL, `Alter` INT(5) NOT NULL, `Geb_Bundesland` INT(5)[Dokumentation]


SQL-Befehl :



CREATE TABLE `Benutzerdaten` ( `USER_ID` INT( 5 ) NOT NULL AUTO_INCREMENT ,
`Jahr` VARCHAR( 4 ) NOT NULL ,
`Monat` VARCHAR( 2 ) NOT NULL ,
`Tag` VARCHAR( 2 ) NOT NULL ,
`Stunde` VARCHAR( 2 ) NOT NULL ,
`Minute` VARCHAR( 2 ) NOT NULL ,
`Sekunde` VARCHAR( 2 ) NOT NULL ,
`Name_User` LONGTEXT( 50 ) NOT NULL ,
`Alter` INT( 5 ) NOT NULL ,
`Geb_Bundesland` INT( 5 ) NOT NULL ,
`EW_Geb_Ort` INT( 5 ) NOT NULL ,
`Geschlecht` INT( 1 ) NOT NULL ,
`Ausbildung` INT( 1 ) NOT NULL ,
`Wohnort` TEXT( 30 ) NOT NULL ,
`PLZ` INT( 5 ) NOT NULL ,
`Dauer_Wien` INT( 1 ) NOT NULL ,
`Fuehrerschein` INT( 1 ) NOT NULL ,
`Auto_Benutzung` INT( 1 ) NOT NULL ,
`Jahresnetzkarte` INT( 1 ) NOT NULL ,
`Arbeitsweg` INT( 4 ) NOT NULL ,
PRIMARY KEY ( `Jahr` , `Monat` , `Tag` , `Stunde` , `Minute` , `Sekunde` )
)
 
Wenn ich mich nicht allzu sehr täusche, dann gibt es für LONGTEXT keine Angabe der Länge.
Nimm also mal das "(50) NOT NULL" hinter LONGTEXT raus.
Dann müsste es eigentlich funktionieren.

redlama
 
herzlichen Denk!

bei der Gelegenheit habe ich noch eine weitere Fehlermeldung:

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 'Sekunde, Name) values (2004, 10, 26, 13, 01, 'XY')' at line 1


PHP:
<html>
<head>
<?php
  if (isset($_POST["gesendet"]))
   {
	$db_host = "localhost"; 
	$db_user = "lags";
	$db_pass = "*****";
	$db_name = "kdsw_21";
   
   //  @mysql_connect($db_host,$db_user,$db_pass) or die(mysql_error());
 $db = mysql_connect($db_host,$db_user,$db_pass) or die(mysql_error());
	@mysql_select_db($db_name) or die(mysql_error());
// Bei register_global=off Variablen eintragen
  if (!ini_get('register_globals'))
  {
	$types_to_register = array('GET','POST','COOKIE','SESSION','SERVER');
	foreach ($types_to_register as $type)
	{
	 if (@count(${'HTTP_' . $type . '_VARS'}) > 0)
	 {
	   extract(${'HTTP_' . $type . '_VARS'}, EXTR_OVERWRITE);
	 }
	}
  }
	  $sqlab = "insert benutzerdaten";
	  $sqlab .= "(Jahr, Monat, Tag, Stunde, Minute";
	  $sqlab .= " Sekunde, Name) values ";
//	  $sqlab .= "('$na', '$vn', $pn, $ge, '$gt')";
//	  $sqlab .= '".$_POST["na"]."', '".$_POST["vn"]."';
	  $sqlab .= "(".$_POST["jahr"].", ".$_POST["monat"].", ".$_POST["tag"].", ".$_POST["stunde"].", ".$_POST["minute"].", '".$_POST["name"]."')";
 mysql_query($sqlab) or die(mysql_error());
	  $num = mysql_affected_rows();
	  if ($num>0)
		 echo "Es wurde 1 Datensatz hinzugefügt<p>";
	  else
	  {
		 echo "Es ist ein Fehler aufgetreten, ";
		 echo "es wurde kein Datensatz hinzugefügt<p>";
	  }
	  mysql_close($db);
   }
?>
</head>
<body>
Geben Sie einen vollständigen Datensatz ein und senden Sie das 
Formular ab:
<form action = "uf15.php" method = "post">
	<input name="jahr"> Jahr<p>
	<input name="monat"> Monat<p>
	<input name="tag"> Tag <p>
	<input name="stunde"> Stunde<p>
	<input name="minute">Minute<p>
  <input name="sekunde">Sekunde<p>
   <input name="name">Name<p>
	<input type="submit" name="gesendet">
	<input type="reset">
</form>
Alle Datensätze <a href="uf07.php">anzeigen</a>
</body>
</html>
 
Leopold_Schefcik hat gesagt.:
$sqlab = "insert benutzerdaten";
$sqlab .= "(Jahr, Monat, Tag, Stunde, Minute";
$sqlab .= " Sekunde, Name) values ";
$sqlab .= "(".$_POST["jahr"].", ".$_POST["monat"].", ".$_POST["tag"].", ".$_POST["stunde"].", ".$_POST["minute"].", '".$_POST["name"]."')";
Dazu 2 Dinge.
1.: Muss das nicht eigentlich so aussehen '".$_POST["jahr"]."' ?
2.: Hast Du zwischen $_POST["minute"] und $_POST["name"] nicht die Sekunden vergessen?

redlama

P.S. Kann sein, dass es nur an 2. liegt und 1. falsch ist.
 
Zurück