PHP SQL Update

PEASANT KING

Commander
Registriert
Okt. 2008
Beiträge
2.412
Moin moin,

vielleicht kann mir ja einer von euch mal erklären wieso ich immer einen Parse Error bekomme -.-
PHP:
$connectionid = mysql_connect ("localhost", "root", "****"); 
if (!mysql_select_db ("db188774917", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

$sql = "UPDATE jos_users"
        . "SET password = md5("$_REQUEST['password']")"
        . "WHERE id ="$_REQUEST['id']"";        

$result = mysql_query($sql);
Hintergrund ist folgender ich update per Formular das Passwort der Benutzer.
 
Zuletzt bearbeitet:
versuchs mal so:
PHP:
$sql = 'UPDATE `jos_users`'.
         'SET `password` = \''.md5( $_REQUEST['password'] ).'\''.
         'WHERE `id` = '.$_REQUEST['id'];
spaltennamen sollten immer in `` eingeschlossen werden. ob du nun die md5 funktion von php oder sql nutzt ist imo egal. vllt arbeitet eines ja schneller, aber du kannst du ja selbst mal ausprobieren. der fehler war allerdings bei id. was ist folgendes konstrukt:
PHP:
"WHERE id ="$_REQUEST['id']""
dort fehlt entweder der punkt zur verkettung oder du musst escapen. abseits davon ist id wohl ein int-typ, von daher sind hochkommas dort sowieso fehl am platze. solche treten nur bei strings auf.
 
PHP:
$sql = "UPDATE jos_users"
        . " SET password = '".md5($_REQUEST['password'])."'"
        . " WHERE id = ".$_REQUEST['id'];
Dir fehlte der Zwischenraum zwischen dem Tabellennamen und dem "SET".

@claW: Die Anführungszeichen `` sind nur dann notwendig, wenn man Tabellen mit Schlüsselworten des DBMS benannt hat. Ansonsten sind sie obsolet.
 
Zuletzt bearbeitet:
und wie stehts mit leerzeichen im spaltennamen? ;) obsolet sind sie bei weitem nicht, man brauch sie dagegen nur selten. imo sollte man sie aber trotzdem schreiben, denn somit weiß man ganz einfach, was eine spalte ist und was nicht.
 
Die ``-Anführungszeichen sind nicht SQL-Standard-konform.

Standard-konform ist z.B.:
SELECT * FROM "my table";

Leider kocht jedes DBMS sein eigenes Süppchen. Bei Oracle z.B. sind Tabellennamen nur bis maximal 30 Zeichen zulässig.
 
Erstmal danke für die Hilfe euch allen.
Allerdings habe ich ein neues Problem, nämlich die Sache ist folgende mittels PHP soll der Abgleich der Kundennummer stattfinden wenn die gleich ist dann soll das PW geändert werden wenn nicht dann soll ein Fehlertext ausgegeben werden.
Das funktioniert soweit, allerdings datet er mir das PW nicht up wenn die Nummern übereinstimmen -.- . Was läuft da schief ?

PHP:
<?php 
session_start ();

$connectionid = mysql_connect ("localhost", "root", "***"); 
if (!mysql_select_db ("db188774917", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 
$sql = "SELECT ". 
    "id, kdnummer ". 
  "FROM ". 
    "jos_users ". 
  "WHERE ". 
    "(id = '".$_REQUEST["id"]."')"; 

$result = mysql_query ($sql); 

$data = mysql_fetch_array ($result); 

/*Zum überprüfen der Kundennummern
echo $data['kdnummer'];
echo $_REQUEST['kdnummer'];
*/

if ($_REQUEST['kdnummer'] == $data['kdnummer'])
{
$sql = 'UPDATE `jos_users`'.
       'SET `password` = \''.md5( $_REQUEST['password'] ).'\''.
       'WHERE `id` = '.$_REQUEST['id'];  


  echo ("Passwort wurde geändert!");
}

else 

{ 
  die ("Die ID stimmt nicht mit der Kundennummer überein!"); 
}     
    
?>
 
Du musst dein Update-Statement auch mal die Datenbank weitergeben. Sonst wirds ja nicht ausgeführt...
 
Ahh lol ich Dummerchen ^^ danke nochmals.
 
Zurück
Oben