PHP und SQL Code UPDATE geht nicht

Hallo,

ich wills ganz kurz machen. Ich habe folgenden Code:

if (isset($_GET[UserName]) && isset($_GET[UserPass]) && isset($_GET[UserMail]) ) { $code = mysql_query('UPDATE users SET UserName = "'.mysql_real_escape_string($_GET[UserName]).'", UserPass = md5("'.mysql_real_escape_string($_GET[UserPass]).'"), UserMail = "'.mysql_real_escape_string($_GET[UserMail]).'", VorName = "'.mysql_real_escape_string($_GET[VorName]).'", NachName = "'.mysql_real_escape_string($_GET[NachName]).'" WHERE UserID = "'.$_GET[id].'"')or die(mysql_error()); if ($code) { echo 'Sie haben das Profil erfolgreich bearbeitet.<br>'; } else { echo 'Es ist ein unbekannter Fehler bei der Bearbeitung aufgetreten.<br> Fehler: '.mysql_error().''; }

Es wird alles richtig angezeigt und so, nur habe ich das Problem, das meine Tabelle irgendwie nicht geupdatet wird. Ich würde es ja mit INSERT machen, aber die Spalten sollen keine doppelten einträge zulassen, dewegen ist da dann immer der Fehler o.0 . Aber hier scheint seitens PHP nichts zu kommen, kein fehler nix. Und trotzdem geht es nicht. Hat einer irgendeine Ahnung, warum??

Grüße

Hat $_GET[‘id’] auch wirklich den richtigen Wert?

[ul][li]Stelle das error_reporting vernünftig ein. (Informiere dich bitte, falls dir das nichts sagt.)[/li]
[li]Überprüfe mittels Kontrollausgaben, ob deine If-Bedingung überhaupt zutrifft.[/li]
[li]An einer wichtigen Stelle hast du das Escaping der Daten vergessen. Wenn das erst mal „funktioniert“, wäre es damit ein leichtes, mit einer Eingabe die Daten bei allen Nutzer-Datensätzen auf einmal zu verändern.[/li]
[li]Vernünftig formatierter Code hilft, die Übersicht zu behalten. Dazu gehört u.a., nicht möglichst viel Code in eine Zeile zu quetschen. Bspw. erst mal die SQL-Query in einer Variablen abzulegen, und diese dann anschließend als Argument für mysql_query zu verwenden, wäre eine erste Verbesserung in der Hinsicht. Damit kannst du dir nämlich dann auch das Statement sehr simpel zur Kontrolle ausgeben lassen, um es bspw. mal per Copy&Paste über phpMyAdmin zu testen.[/li][/ul]

Komische Begründung.
Entweder willst du mit INSERT einen neuen Datensatz einfügen, oder mit UPDATE einen bestehenden verändern - diesbezüglich solltest du dich erst mal entscheiden.

Und bzgl. Spalten oder Spalten-Kombinationen, die keine doppelten Einträge zu lassen sollen - beschäftige dich damit, was ein Unique Index ist und leistet.

Ja :wink:

[quote]Stelle das error_reporting vernünftig ein. (Informiere dich bitte, falls dir das nichts sagt.)[/quote]

error_reporting hatte ich angestellt, kein Fehler :slight_smile:

[quote]Überprüfe mittels Kontrollausgaben, ob deine If-Bedingung überhaupt zutrifft.[/quote]

Trifft zu

[quote]An einer wichtigen Stelle hast du das Escaping der Daten vergessen. Wenn das erst mal „funktioniert“, wäre es damit ein leichtes, mit einer Eingabe die Daten bei allen Nutzer-Datensätzen auf einmal zu verändern.[/quote]

Ja, aber das soll eine admin.php werden wo ich nur zugriff habe, aber ich nehm mir das natürlich gern an. Musst mir nur sagen wo :stuck_out_tongue:

danke für den Tipp, bin halt noch ein wenig neu :neutral_face: , hilft mir aber bei dem problem nicht weiter.

[quote]Komische Begründung.
Entweder willst du mit INSERT einen neuen Datensatz einfügen, oder mit UPDATE einen bestehenden verändern - diesbezüglich solltest du dich erst mal entscheiden.

Und bzgl. Spalten oder Spalten-Kombinationen, die keine doppelten Einträge zu lassen sollen - beschäftige dich damit, was ein Unique Index ist und leistet.[/quote]

Das sagte ich nur, weil ich gelesen habe, dass man auch mit INSERT den Datensatz “updaten” kann, indem ich ihn sozusagen nochmal neu einschreibe

Nicht, wenn du die Hälfte des Hinweises ignorierst …

Aussagen dazu, was konkret du selber jetzt an zusätzlichen Debug-Maßnahmen unternommen hast, und mit welchen Ergebnissen, vermisse ich in deiner Antwort.

Da meinst du vermutlich die INSERT … ON DUPLICATE KEY UPDATE-Syntax.
Die erfordert aber auch einen Unique Key, damit sie überhaupt wirksam werden kann.

So, jetzt habe ich meinen Fehler ^^

Ich habe die Eintragung bei dem WHERE in der Syntax falsch angegeben. Es hätte UserID sein müssen und nicht nur id. Weiß nciht wie das passieren konnte, trotzdem danke für die Hilfe und vieleicht sagst du mir auch noch wo ich den escape string vergessen habe :unamused:

Wenn es $_GET[id] nicht gab, dann hätte vernünftig eingestelltes error_reporting dir auch einen Fehler gemeldet.
Und es liefert dir auch vorher schon Meldungen, weil du einige (höchstvermutlich) gar nicht definierte Konstanten benutzt.

So ziemlich einzig mögliche Schlussfolgerung: Du hast es nicht vernünftig eingestellt :motz:

Na an genau der Stelle …

oO, klar hat er mir dann fehlende Konstanzen geliefert. aber wie ich das bis jetzt gelernt habe sind die sowieso da und ich brauch die nicht zu beachten. Muss da wohl einen fehler komplett übersehen haben :whata:

Und deswegen habe ich den reporting auch rausgemacht. Nich so gut?

Konstanten - nicht irgendwelche Frauen …

Dann hast du es falsch gelernt.

Natürlich nicht - merkst du doch: Du musst wegen „blöden“ Fehlern extra fragen, obwohl PHP dich gerne gleich darauf hingewiesen hätte.