Komisches Problem beim Update von Tabellen...

Mein Script sieht so aus:
PHP:
<?php
include "config.php";
// mysql connection 
$mysql_id = @mysql_connect($mysql_host,$mysql_user,$mysql_pass) OR die(mysql_error()); 
            @mysql_select_db($mysql_db,$mysql_id) OR die(mysql_error()); 
$oldpass = MD5('$oldpass');
echo $oldpass;
if($newpass1==$newpass2){
$sql = mysql_query("UPDATE User SET Name=Name, Passwort = '".$newpass1."', Email=Email WHERE Name = '".$user."' AND Passwort = '".$oldpass."'", $mysql_id) or die(mysql_error());
 
} 
if($sql == 1){
   echo "Passwort erfolgreich ge&auml;ndert...";
  } else {
   echo "Fehler...";
  }
} else {
$error = 1;
}
}else {
$error = 1;
}
}
if($error == 1) {
echo "Falsche Passwortwiederholung oder altes Passwort. Bitte &uuml;berpr&uuml;fen Sie nochmal Ihre Angaben. Dazu werden Sie nun automatisch weitergeleitet...";
echo "<meta http-equiv=\"refresh\" content=\"3; URL=memberlogin.php?action=chancepass\">";
die(); 
?>
wenn ich das Script ausführe, bekomme ich immer die Fehlermeldung "Parse error: parse error, expecting `','' or `';'' in /home/www/ncf238/html/Page/updatepass.php on line 58" Line 58 is die Zeile mit dem UPDATE Befehl.
An der config.php liegts net, bei ner anderen Seite tuts nämlich.
Also ich habe keinen Fehler gefunden, vielleicht findet ja einer von den Profis hier den Fehler.

MagicMasterII
 
Zuletzt bearbeitet:
Aha...














(Na fällt was auf? Richtig, du beschreibst weder genauer dieses "komische Problem", noch gehst du auf eventuelle Fehlermeldungen oder Ähnliches ein. Bitte nachbessern!)
 
Dein alter Code. Fällt dir was auf?
PHP:
$oldpass = MD5('$oldpass'); 
echo $oldpass; 
if($newpass1==$newpass2){ 
$sql = mysql_query("UPDATE User SET Name=Name, Passwort = '".$newpass1."', Email=Email WHERE Name = '".$user."' AND Passwort = '".$oldpass."'", $mysql_id) or die(mysql_error()); 

}

Ich würde [phpf]MD5[/phpf] mit einer Variablen aufrufen und nicht so wie du:
PHP:
$oldpass = MD5($oldpass); 
echo $oldpass;

Der Fehler kommt in deiner mysql_query-Fkt.
PHP:
$sql = mysql_query("UPDATE User SET Name=Name, Passwort = '$newpass1', Email=Email WHERE Name = '$user' AND Passwort = '$oldpass'");
if(!$sql) {
 die(mysql_error());
}

Probier das mal so :)
 
Zuletzt bearbeitet:
Wenn's nicht klappt versuch' mal folgendes:
PHP:
<?php
  include "config.php";

// mysql connection
  $mysql_id = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
  mysql_select_db($mysql_db, $mysql_id);

  if( $newpass1 == $newpass2 ) {
    $query = "
		UPDATE
		        `User`
		  SET
		        `Passwort` = '".mysql_escape_string($newpass1)."',
		  WHERE
		        `Name` = '".$user."'
		    AND `Passwort` = MD5('".mysql_escape_string($oldpass)."')
	";
    if(!$res = mysql_query($query)) {
      echo '<p><strong>MySQL Error <tt>'.mysql_errno().'</tt>:</strong> '.htmlspecialchars(mysql_error()).'<pre>'.$query.'</pre></p>';
      exit;
    } else {
      echo 'Passwort erfolgreich ge&auml;ndert...';
    }
  } else {
    $error = 1;
  }

  if( $error == 1 ) {
    echo 'Falsche Passwortwiederholung oder altes Passwort. Bitte &uuml;berpr&uuml;fen Sie nochmal Ihre Angaben. Dazu werden Sie nun automatisch weitergeleitet...';
  echo '<meta http-equiv="refresh" content="3; URL=memberlogin.php?action=chancepass">';
    exit;
  }
?>
Du solltest etwas mehr Struktur in deinen Quelltext bringen.
 
Original geschrieben von MagicMasterII
Mein Script sieht so aus:
PHP:
<?php
if($newpass1==$newpass2){
$sql = mysql_query("UPDATE User SET Name=Name, Passwort = '".$newpass1."', Email=Email WHERE Name = '".$user."' AND Passwort = '".$oldpass."'", $mysql_id) or die(mysql_error());
 ?>
Also wenn du einen String (Zeichenfolge) speichern willst, musst du auf jeden Fall erstmal Name = 'Name' schreiben, genauso bei Email. Aber hierbei wird dann in das Feld Name das Wort name geschrieben. Aber ich denke, dass dort der Nick des Users stehen bleiben soll, oder? Dann lass mal Name, und Email weg.
Dann sieht das so aus:
PHP:
$sql = mysql_query("UPDATE User SET  Passwort = '".$newpass1."',  WHERE Name = '".$user."' AND Passwort = '".$oldpass."'", $mysql_id) or die(mysql_error());
Außerdem was soll das $mysql_id da hinten dran? da müsste etwa stehen AND Id = '".$mysql_id."' oder so.
Probiers mal so wie ich beschrieben habe und wenns nicht klappt, dann sag bescheid.
 
Original geschrieben von MagicMasterII
Mein Script sieht so aus:
PHP:
include "config.php";
// mysql connection 
$mysql_id = @mysql_connect($mysql_host,$mysql_user,$mysql_pass) OR die(mysql_error()); 
            @mysql_select_db($mysql_db,$mysql_id) OR die(mysql_error());

Dann ersetze mal deinen Code hiermit:
PHP:
include "config.php";
// mysql connection 
$mysql_id = "@mysql_connect($mysql_host,$mysql_user,$mysql_pass) OR die(mysql_error())"; 
@mysql_select_db($mysql_db,$mysql_id) OR die(mysql_error());
Du hast da nur zwei anführungszeichen vergessen.
 
Zurück