Frage von KillermasterxD, 26

Was ist der Fehler bei diesem UPDATE?

Hier ist der Code: http://pastebin.com/xsBNExPC

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von LeonardM, 4

email ist nicht im array definiert und ausserdem sollte der query zb so aussehen

SELECT * FROM tbl WHERE sp = :we

Und nicht so

SELECT * FROM tbl WHERE 'sp' = :we

Antwort
von DocShamac, 23

(Da du keine Fehlermeldung mitlieferst, könnte meine Antwort komplett daneben liegen.)

Ich vermute es liegt daran, dass du Variablen einfügen willst, die aber nicht aufgelöst werden:

"UPDATE users SET 'name' = :name WHERE 'email' = :email"

Bei PHP würde ich erwarten, dass du folgendes schreibst:

"UPDATE users SET 'name' = {$name} WHERE 'email' = {$email}"

Kommentar von KillermasterxD ,

sry Fehlermeldung ist: Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /users/zocker-ka/www/login/geheim.php on line 27

Kommentar von DocShamac ,

Habe mir gerade erst Zeile 27 angesehen. Also die Variablenersetzung findet dort statt. Du hast vergessen, "email" als Parameter zu belegen.

Also ignoriere, was ich zuerst geschrieben habe und versuche es mal mit folgendem:

$result = $statement->execute(array('name' => $name, 'email' => $email));
Kommentar von KillermasterxD ,

Keine Fehlermeldung mehr, aber es wird nichts in der DB geändert

Kommentar von DocShamac ,

Ob ich dir helfen kann hängt ein bisschen davon ab, was diese Seite eigentlich tun soll. Im Augenblick übergibst du name und email als POST-Parameter. Das Update-Statement ersetzt nun den Namen in der Tabelle "users" überall dort mit name, wo die E-Mailadresse mit email übereinstimmt.

Ich habe irgendwie das Gefühl das ist nicht das, was du willst.

Führe das Statement doch mal direkt auf der Datenbank aus:

UPDATE users SET 'name' = 'Meier' WHERE 'email' = 'test@meiertest.de'

Wenn in der Tabelle "users" ein Benutzer mit der E-Mailadresse "test@meiertest.de" enthalten ist, dann setzt das Statement den Namen auf "Meier". Es passiert nichts, wenn es niemanden mit email="test@meiertest.de" in der Tabelle gibt.

Außerdem solltest du mal überprüfen, ob name und email überhaupt belegt sind, wenn die Seite aufgerufen wird.

Kommentar von KillermasterxD ,

Es ist in der Userarea eingebaut und soll den Usern ermöglichen den Namen zu. ändern

Kommentar von DocShamac ,
  1. Wenn du dir sicher bist, dass name und email in Zeile 27 korrekt vorhanden sind, dann weiß ich nicht, warum es in der DB keine Änderung gibt.
  2. Wozu brauchst du das Fetch-Statement in Zeile 28? Ein Update-Statement gibt ja normalerweise nicht so richtig viel Daten zurück.
  3. An deiner Stelle würde ich den User nicht anhand seiner E-Mailadresse identifizieren, sondern jedem User eine eindeutige UserID geben. Das hilft dir aber bei deinem Problem jetzt nicht weiter.
Kommentar von KillermasterxD ,

Und es werden Daten über tragen habe falsche Daten eingehen und kam die Meldung Falsche Daten eingegeben

Kommentar von KillermasterxD ,

Habs hingenommen http://pastebin.com/5wU7Bg6y

Kommentar von DocShamac ,

nice :)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten