[PHP + MySql] Finde Fehler nicht!

cille

Erfahrenes Mitglied
Hi ho,
finde den Fehler nich.
habe ein Formular wo sich die User Editieren können.
Nach dem Abschicken wird ja die MySql Tabelle:
"users"
bei dem entsprechenden User bearbeitet.
aber es kommt der Fehler:
Code:
Parse error: syntax error, unexpected T_STRING in /www/htdocs/plugin/test/show/profil_edit.php on line 276

Habe schon durchgeguckt,
habe aber nur ein fehlendes ","(komma) gefunden.
Aber da muss noch was defekt sein,
die schreibweisen sind richtig vom inhalt der
$_POST[""]
Variable.

Hoffe Ihr findet den fehler :)
Währe euch sehr dankbar.

Hier mal der Code:
PHP:
$update = "UPDATE users SET email='".$_POST["email"]."', nick='".$_POST["username"]."', alter='".$_POST["alter"]."', geschlecht='".$_POST["geschlecht"]."', wohnort='".$_POST["wohnort"]."', beruf='".$_POST["beruf"]."', national='".$_POST["national"]."', homepage='".$_POST["homepage"]."', clan='".$_POST["clan"]."', lieblingsgetrank='".$_POST["lieblingsgetrank"]."', lieblingsfilm='".$_POST["lieblingsfilm"]."', lieblingssong='".$_POST["lieblingssong"]."', lieblingsautor='".$_POST["lieblingsautor"]."', lieblingsschauspieler='".$_POST["lieblingsschauspieler"]."', lieblingssport='".$_POST["lieblingssport"]."', lieblingsessen='".$_POST["lieblingsessen"]."', lieblingsmusik='".$_POST["lieblingsmusik"]."', lieblingsbuch='".$_POST["lieblingsbuch"]."', lieblingsperson='".$_POST["lieblingsperson"]."', lieblingsauto='".$_POST["lieblingsauto"]."', lieblingssportler='".$_POST["lieblingssportler"]."', lieblingsmap='".$_POST["lieblingsmap"]."', lieblingsspieler='".$_POST["lieblingsspieler"]."', lieblingsrasse='".$_POST["lieblingsrasse"]."', lieblingsclan='".$_POST["lieblingsclan"]."', lieblingsheld='".$_POST["lieblingsheld"]."', lieblingswebsite='".$_POST["lieblingswebsite"]."', cpu='".$_POST["cpu"]."', grafikkarte='".$_POST["grafikkarte"]."', festplatte='".$_POST["festplatte"]."', monitor='".$_POST["monitor"]."', cd='".$_POST["cd"]."', tastatur='".$_POST["tastatur"]."', connection='".$_POST["connection"]."', ram='".$_POST["ram"]."', soundkarte='".$_POST["soundkarte"]."', motherboard='".$_POST["motherboard"]."', betriebssystem='".$_POST["betriebssystem"]."', maus='".$_POST["maus"]."', mauspad='".$_POST["mauspad"]."', headset='".$_POST["headset"]."', icq='".$_POST["icq"]."', ircserver='".$_POST["ircserver"]."', ircchannel='".$_POST["ircchannel"]."', steamid='".$_POST["steamid"]."' WHERE id='".mysql_real_escape_string($_POST["id"])."'";
		mysql_query($update) or die mysql_error();
 
Ich denke, dass Problem daran ist, dass du bei den Indexes der Arrays Anführungszeichen nutzt, denn diese nutzt du ja auch für den kompletten String ansich. PHP wird denken, dass dort der String weitergeht und gibt dir deswegen einen Fehler aus.
Setze mal statt der Anführungszeichen Hochkommata bei den Indexes...
 
probiers mal so:

Code:
$update = "UPDATE users SET email='".$_POST["email"]."' AND nick='".$_POST["username"]."' AND alter='".$_POST["alter"]."' AND geschlecht='".$_POST["geschlecht"]."' AND wohnort='".$_POST["wohnort"]."' AND beruf='".$_POST["beruf"]."' AND  national='".$_POST["national"]."' AND homepage='".$_POST["homepage"]."' AND clan='".$_POST["clan"]."' AND lieblingsgetrank='".$_POST["lieblingsgetrank"]."' AND lieblingsfilm='".$_POST["lieblingsfilm"]."' AND lieblingssong='".$_POST["lieblingssong"]."' AND lieblingsautor='".$_POST["lieblingsautor"]."' AND lieblingsschauspieler='".$_POST["lieblingsschauspieler"]."' AND lieblingssport='".$_POST["lieblingssport"]."' AND lieblingsessen='".$_POST["lieblingsessen"]."' AND lieblingsmusik='".$_POST["lieblingsmusik"]."' AND lieblingsbuch='".$_POST["lieblingsbuch"]."' AND lieblingsperson='".$_POST["lieblingsperson"]."' AND lieblingsauto='".$_POST["lieblingsauto"]."' AND lieblingssportler='".$_POST["lieblingssportler"]."' AND lieblingsmap='".$_POST["lieblingsmap"]."' AND lieblingsspieler='".$_POST["lieblingsspieler"]."' AND lieblingsrasse='".$_POST["lieblingsrasse"]."' AND lieblingsclan='".$_POST["lieblingsclan"]."' AND lieblingsheld='".$_POST["lieblingsheld"]."' AND lieblingswebsite='".$_POST["lieblingswebsite"]."' AND cpu='".$_POST["cpu"]."' AND grafikkarte='".$_POST["grafikkarte"]."' AND festplatte='".$_POST["festplatte"]."' AND monitor='".$_POST["monitor"]."' AND cd='".$_POST["cd"]."' AND tastatur='".$_POST["tastatur"]."' AND connection='".$_POST["connection"]."' AND ram='".$_POST["ram"]."' AND soundkarte='".$_POST["soundkarte"]."' AND motherboard='".$_POST["motherboard"]."' AND betriebssystem='".$_POST["betriebssystem"]."' AND maus='".$_POST["maus"]."' AND mauspad='".$_POST["mauspad"]."' AND headset='".$_POST["headset"]."' AND icq='".$_POST["icq"]."' AND ircserver='".$_POST["ircserver"]."' AND ircchannel='".$_POST["ircchannel"]."' AND steamid='".$_POST["steamid"]."' WHERE id='".mysql_real_escape_string($_POST["id"])."'"; 
        mysql_query($update) or die mysql_error();
 
Habe über all jetzt ein:
AND
gesetzt und die
$_POST[""]
daten in Variablen gesteckt, jetzt zeigt er den fehler an:
Code:
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 'alter='19' AND geschlecht='männlich' AND wohnort='Cottbus' AND beruf='Mediengest' at line 1

habe den aber nicht gefunden,
mein code schaut jetzt so aus:
PHP:
$update = "UPDATE users SET email='".$email."' AND nick='".$nick."' AND alter='".$alter."' AND geschlecht='".$geschlecht."' AND wohnort='".$wohnort."' AND beruf='".$beruf."' AND national='".$national."' AND homepage='".$homepage."' AND clan='".$clan."' AND lieblingsgetrank='".$lieblingsgetrank."' AND lieblingsfilm='".$lieblingsfilm."' AND lieblingssong='".$lieblingssong."' AND lieblingsautor='".$lieblingsautor."' AND lieblingsschauspieler='".$lieblingsschauspieler."' AND lieblingssport='".$lieblingssport."' AND lieblingsessen='".$lieblingsessen."' AND lieblingsmusik='".$lieblingsmusik."' AND lieblingsbuch='".$lieblingsbuch."' AND lieblingsperson='".$lieblingsperson."' AND lieblingsauto='".$lieblingsauto."' AND lieblingssportler='".$lieblingssportler."' AND lieblingsmap='".$lieblingsmap."' AND lieblingsspieler='".$lieblingsspieler."' AND lieblingsrasse='".$lieblingsrasse."', lieblingsclan='".$lieblingsclan."' AND lieblingsheld='".$lieblingsheld."' AND lieblingswebsite='".$lieblingswebsite."' AND cpu='".$cpu."' AND grafikkarte='".$grafikkarte."' AND festplatte='".$festplatte."' AND monitor='".$monitor."' AND cd='".$cd."' AND tastatur='".$tastatur."' AND connection='".$connection."' AND ram='".$ram."' AND soundkarte='".$soundkarte."' AND motherboard='".$motherboard."' AND betriebssystem='".$betriebssystem."' AND maus='".$maus."' AND mauspad='".$_mauspad."' AND headset='".$headset."' AND icq='".$icq."' AND ircserver='".$ircserver."' AND ircchannel='".$ircchannel."' AND steamid='".$steamid."' WHERE id='".mysql_real_escape_string($id)."'";
		mysql_query($update) or die(mysql_error());

Das "alter" ist fast ganz vorne.

Hoffe Ihr seht was.

mfg, cille
 
Hmmm...

Also bei Access ist es so, dass man keine Schlüsselworte für Feldnamen in Datenbanken nutzen darf (also dürfen zwar schon, aber man bekommt eben Fehler).
Ich würde mal das Feld "alter" anders benennen, denn "ALTER" ist ein SQL-Begriff!

Versuchs mal, sollte helfen...

MfG
..::SD::..
 
Ach genau, dass wird es sein.
Kenne das Problem. Genau aus diesem Grund arbeite ich immer mit englischen Begriffen.
ALTER = ein SQL-Befehl und wenn du diesen Begriff innerhalb eines anderen Befehls hast, kommt SQL durcheinander und denkt, dass dort ein ALTER-Befehl anfängt...
Hatte das gleiche Problem auch schon einmal und es dauerte eine Weile bis ich den Fehler gefunden habe. Deswegen versuche ich immer den Fehler einzugrenzen indem ich Codeschnippsel rausnehme.
 
Habe das "alter" jetzt ind "geburtsdatum" geändert,
aber wenn ich jetzt was geändert habe und auf abschicken drücke,
UPDATET er die datenbank nicht.
Woran kann das liegen?

Hier mal der Komplette code vom PHP Bereich:
PHP:
<?php
if (isset($_POST['submit'])) {
	
 	$fehler = false;
  $fehlertext = "";
	
	if(empty($_POST["username"])) {
		$fehler = true;
		$fehlertext .= "<b>Bitte ein gewünschten Usernamen angeben!</b><br>\n";
	} elseif(strlen($_POST['username']) < 4) {
    $fehler = true;
    $fehlertext .= "  <b>Ihr gewünschte Username ist zu Kruz!<b><br>\n";
	} elseif($data['nick'] == $_POST['username']) {
    $fehler = true;
    $fehlertext .= "  <b>Ihr gewünschter Username ist leider schon vergeben!</b><br>\n";
	}
	
  $muster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/";
  if(empty($_POST['email'])) {
    $fehler = true;
    $fehlertext .= "<b>Die E-Mail-Adresse fehlt!</b><br>\n";
  } elseif(preg_match($muster, $_POST['email']) == 0) {
    $fehler = true;
    $fehlertext .= "Die E-Mail Adresse ist ungültig!<br>\n";
  }
  if($fehler) {
    echo "<p>$fehlertext</p>";
  }
  else {
		
		$email = $_POST["email"];
		$nick = $_POST["nick"];
		$geburtsdatum = $_POST["geburtsdatum"];
		$geschlecht = $_POST["geschlecht"];
		$wohnort = $_POST["wohnort"];
		$beruf = $_POST["beruf"];
		$national = $_POST["national"];
		$homepage = $_POST["homepage"];
		$clan = $_POST["clan"];
		$lieblingsgetrank = $_POST["lieblingsgetrank"];
		$lieblingsfilm = $_POST["lieblingsfilm"];
		$lieblingssong = $_POST["lieblingssong"];
		$lieblingsautor = $_POST["lieblingsautor"];
		$lieblingsschauspieler = $_POST["lieblingsschauspieler"];
		$lieblingssport = $_POST["lieblingsort"];
		$lieblingsessen = $_POST["lieblingsessen"];
		$lieblingsmusik = $_POST["lieblingsmusik"];
		$lieblingsbuch = $_POST["lieblingsbuch"];
		$lieblingsperson = $_POST["lieblingsperson"];
		$lieblingsauto = $_POST["lieblingsauto"];
		$lieblingssportler = $_POST["lieblingssportler"];
		$lieblingsmap = $_POST["lieblingsmap"];
		$lieblingsspieler = $_POST["lieblingsspieler"];
		$lieblingsrasse = $_POST["lieblingsrasse"];
		$lieblingsclan = $_POST["lieblingsclan"];
		$lieblingsheld = $_POST["lieblingsheld"];
		$lieblingswebsite = $_POST["lieblingswebsite"];
		$cpu = $_POST["cpu"];
		$grafikkarte = $_POST["grafikkarte"];
		$festplatte = $_POST["festplatte"];
		$monitor = $_POST["monitor"];
		$cd = $_POST["cd"];
		$tastatur = $_POST["tastatur"];
		$connection = $_POST["connection"];
		$ram = $_POST["ram"];
		$soundkarte = $_POST["soundkarte"];
		$motherboard = $_POST["motherboard"];
		$betriebssystem = $_POST["betriebssystem"];
		$maus = $_POST["maus"];
		$mauspad = $_POST["mauspad"];
		$headset = $_POST["headset"];
		$icq = $_POST["icq"];
		$ircserver = $_POST["ircserver"];
		$ircchannel = $_POST["ircchannel"];
		$steamid = $_POST["steamid"];
		$id = $_POST["id"];
		
		$update = "UPDATE users SET email='".$email."' AND nick='".$nick."' AND geburtsdatum='".$geburtsdatum."' AND geschlecht='".$geschlecht."' AND wohnort='".$wohnort."' AND beruf='".$beruf."' AND national='".$national."' AND homepage='".$homepage."' AND clan='".$clan."' AND lieblingsgetrank='".$lieblingsgetrank."' AND lieblingsfilm='".$lieblingsfilm."' AND lieblingssong='".$lieblingssong."' AND lieblingsautor='".$lieblingsautor."' AND lieblingsschauspieler='".$lieblingsschauspieler."' AND lieblingssport='".$lieblingssport."' AND lieblingsessen='".$lieblingsessen."' AND lieblingsmusik='".$lieblingsmusik."' AND lieblingsbuch='".$lieblingsbuch."' AND lieblingsperson='".$lieblingsperson."' AND lieblingsauto='".$lieblingsauto."' AND lieblingssportler='".$lieblingssportler."' AND lieblingsmap='".$lieblingsmap."' AND lieblingsspieler='".$lieblingsspieler."' AND lieblingsrasse='".$lieblingsrasse."', lieblingsclan='".$lieblingsclan."' AND lieblingsheld='".$lieblingsheld."' AND lieblingswebsite='".$lieblingswebsite."' AND cpu='".$cpu."' AND grafikkarte='".$grafikkarte."' AND festplatte='".$festplatte."' AND monitor='".$monitor."' AND cd='".$cd."' AND tastatur='".$tastatur."' AND connection='".$connection."' AND ram='".$ram."' AND soundkarte='".$soundkarte."' AND motherboard='".$motherboard."' AND betriebssystem='".$betriebssystem."' AND maus='".$maus."' AND mauspad='".$_mauspad."' AND headset='".$headset."' AND icq='".$icq."' AND ircserver='".$ircserver."' AND ircchannel='".$ircchannel."' AND steamid='".$steamid."' WHERE id='".mysql_real_escape_string($id)."'";
		mysql_query($update) or die(mysql_error());
		
		//header("Location: index.php?main=accept&id=2");
  }
}
}
?>
 
Zuletzt bearbeitet:
Was ist denn der genaue MySQL Error? Oder taucht keine Error-Message mehr auf?

Hierm al der Auszug aus der MySQL Dokumentation:

Code:
13.2.10. UPDATE
Syntax für eine Tabelle: 

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

Syntax für mehrere Tabellen: 

UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_condition]

Bei der Ein-Tabellen-Syntax aktualisiert die UPDATE-Anweisung Spalten in vorhandenen Datensätzen in tbl_name mit neuen Werten. Die SET-Klausel gibt an, welche Spalten geändert werden und welche Werte diese erhalten sollen. Sofern angegeben, bestimmt die WHERE-Klausel die Bedingungen dafür, welche Datensätze geändert werden. Ohne WHERE-Klausel werden alle Datensätze aktualisiert. Wenn die ORDER BY-Klausel vorhanden ist, werden die Datensätze in der angegebenen Reihenfolge aktualisiert. Die LIMIT-Klausel kann die Anzahl der zu aktualisierenden Datensätze beschränken.

PS: Vergleuiche niemals eine DB Applikation mit Access
 
Zurück