Datenbankfehler (mysql)

LoMo

Erfahrenes Mitglied
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<?php
	
	function datenbank_oeffnen()
	{	
		$hostname = 'localhost';
		$username = 'root';
		$password = '';
		$database = 'test';
		
		$db = mysql_connect($hostname,$username,$password); // Öffnet eine Verbindung zum Datenbankserver
		
		if ($db)
		{
			mysql_select_db($database,$db); // Wählt eine Datenbank aus 
		}
		else
		{
			echo "<b>Verbindung nicht erfolgreich</b>";
		}
		return $db;
	}
	
	function ausgabe($db)
	{
		
		$rs = mysql_query("select * from test01",$db); // Sendet SQL-Befehl
		if ($rs)
		{
			$number = mysql_num_rows($rs);
			echo "<h3>In der gewählten Tabelle sind $number Datensätze vorhanden (Recordcount): </h3>";
			echo "<br />";
			echo "<table border=1>";
			$row = mysql_fetch_array($rs, MYSQL_ASSOC);
			
			// Tabellenfelder als Überschrift
			while ($field = key($row))
			{
				echo '<th>' . ucwords($field) . '</th>';
				next($row);
			}
			echo "</tr><tr><td>";
			echo implode("</td><td>",$row);
			echo "</td></tr>";
			
			// Tabelle mit Datenbankfeldern füllen
			while ($row = mysql_fetch_array($rs, MYSQL_ASSOC))
			{
				echo "<tr><td>";
				echo implode("</td><td>",$row);
				echo " </td></tr>\n";
			}
			
			echo "</table>";
		}
		else
		{
			echo mysql_error($db);
		}
		mysql_close($db);
	}

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Datenbank: MySQL</title>
</head>
<body>
<?php
	if ((isset($_POST['text01'])) && (isset($_POST['text02'])))
	{
			$db = datenbank_oeffnen();
			$query = "INSERT INTO test01 (Index,text01,text02) ";
			$query .= "VALUES ('12','{$_POST['text01']}','{$_POST['text02']}')";
			$rs = mysql_query($query,$db);
			
			if ($rs)
			{
				$number = mysql_insert_id();
				echo $number;
			}
			else
			{
				echo mysql_error($db);
			}
			mysql_close($db);
	}
	
	$db = datenbank_oeffnen();
	ausgabe($db);
?>

<form name="send" method="post" action="<?=$_SERVER['PHP_SELF']?>">
    <input type="text" name="text01">
    <input type="text" name="text02">
    <input type="submit" value="Senden">
</form>
</body>
</html>

kann mir vielleicht jemand sagen was ich hier falsche gemacht hab ? hier kommt der fehler bei Insert Into (schreibvorgang).

hier die genau 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 'Index,text01,text02) VALUES ('12','klo','flo')' at line 1

kurze beschreibung zur datenbank:

Name: test01
Felder: Index datentyp: int standartwert: 0 und unique
text01 datentyp: varchar standartwert: ''
text02 datentyp: varchar standartwert: ''


ich find den fehler einfach nicht. please help ! *g*

mfg lomo
 
„Index“ gehört zu den reservierten Wörtern MySQLs. Versuch mal folgendes:
PHP:
<?php
            […]
            $query = "
                INSERT INTO
                        `test01`
                  SET
                        `Index`  = 12,
                        `text01` = '".$_POST['text01']."',
                        `text02` = '".$_POST['text02']."'
                ";
            […]
?>
 
Zuletzt bearbeitet:
Hi!

Das gehört zwar eigentlich ins Datenbank Forum, aber ich werde Dir trortdem helfen! ;)
Du versuchst einen Wert in das Feld Index einzufügen.
Index ist aber ein von MySQL geschützer Begriff, somit gibt es da Verwechslungen.
Schreibe in Deinem insert Statement statt Index mal `Index`, dann weiß MySQL, dass das Feld Index und nicht der geschützte Begriff gemeint ist!

redlama
 
woa danke für die schnelle antwort. geht jetzt einmanfrei *g*

hätte mal noch ne frage ich bräuchte den index als fortlaufende nummer. wie kann ich das realisieren ?

was mich auch noch interessieren würde warum obwohl beim ersten laden von der php datei noch nix im textfeld steht trotzdem ein wert drin (wird nicht angezeigt aber im sql-statement stehts drin) is , den ich vor so ner halben stunde mal in des textfeld reingeschrieben hab und inzwischen die datei scho wieder geschlossen hatte.

weiss jemand warum ?


mfg lomo
 
Zuletzt bearbeitet:
Das mit der fortlaufenden Nummer geht, allerdings kann es sein, dass es Lücken gibt.
Wenn Du das Feld auf auto_increment setzt und es ein Tinyint oder Int als Datentyp hat, dann wird eine automatische, fortlaufende Nummer vergeben. Wenn Du jetzt allerdings einen Eintrag in der Datenbank löscht, dann wird die entsprechende ID nicht wieder automatisch vergeben. Daher kann es sein, dass Du einen Eintrag mit der ID 1 hast und der nächste dann erst die 5.
Und wie war das mit dem Wert im Feld? Das habe ich nicht ganz verstanden, ...

redlama

P.S. Versuch doch bitte die hier gängige Netiquette zu befolgen und Dich an die Groß-/Kleinschreibung zu halten.
Das macht es für alle einfacher, Beiträge leichter zu erfassen! :)
 
erstmal danke

ok ich versuchs nochmal zu erklären *g*

also ich hab 2 textfelder. beim laden der form frag ich die textfelder mit hilfe von isset ab unb obwohl noch nichts drin steht ist ein wert vorhanden. (im feld steht der text nicht aber wenn ich es mit $_POST['text01'] abfrag steht ein wert drin). grml irgendwie eigenartig *g*.

achja was mir auch noch aufgefallen ist. das passiert nur beim ersten durchlauf(beim laden der datei) und wenn ich aktualisiere mit den explorer. ansonsten schreibt er es nicht rein.
 
Zuletzt bearbeitet:
Zurück