• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

UPDATE haut nicht rein

Status
Für weitere Antworten geschlossen.

brainiac

Neues Mitglied
Bei MySQL habe ich was gemacht, aber es funktioniert nicht. Dann steht da auch nichts besonderes als Fehlermeldung.
PHP:
mysql_query("UPDATE user SET vorname, nachname, alter, email = $vorname, $nachname, $alter, $email
    WHERE username LIKE $username LIMIT 1");
Was kann man machen, damit es funktioniert?
ich habe schon alles mögliche ausprobiert, aber es funktioniert nie!
Hoffe ihr könnt mir helfen.

Viele Grüße
Jonathan
 
Das Statement ist völlig falsch aufgebaut. Wenn du Update verwendest musst Du die Spalten einzeln befüllen und LIMIT hat dort nichts zu suchen. Also:

Code:
mysql_query("UPDATE user SET vorname = '".$vorname."', nachname = '".$nachname."', alter = '".$alter."', email = '".$email."' WHERE username LIKE '".$username."'");
 
Hm. Das funktioniert schon wieder nicht. Selbst mit genau deinem Code nicht!
Da steht
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 = '13', email = '[email protected]' WHERE username LIKE 'Jonathan'' at line 1
Was bedeutet das ?
was muss ich machen?

Viele Grüße
Jonathan
 
Was mir auffällt, das Alter ist in Hochkommas gesetzt, allerdings wird das Alter vermutlich in INT-Wert sein, also ohne Hochkommas.

Kleiner Tipp noch kostenlos dazu: Das Alter als Wert ist nicht so günstig. Speicher lieber das Geburtsdatum, dann hast Du immer das richtige Alter... auch noch in 50 Jahren.

Gruß thuemmy
 
Was mir auffällt, das Alter ist in Hochkommas gesetzt, allerdings wird das Alter vermutlich in INT-Wert sein, also ohne Hochkommas.

Kleiner Tipp noch kostenlos dazu: Das Alter als Wert ist nicht so günstig. Speicher lieber das Geburtsdatum, dann hast Du immer das richtige Alter... auch noch in 50 Jahren.

Gruß thuemmy
Danke für den Tipp :D Ist tatsächlich besser :D Allerdings wenn er tot ist, dann steht da iwann 300 :D :D

*edit*
Aber selbst wenn ich bei alter die Hochkommas weglasse, dann geht das immer noch nicht! Was jetzt? Dort ist aber immernoch die gleiche Fehlermeldung
 
Dann zeig nochmal, was Du jetzt hast (Code). Könnte ja sein, dass Du nochmal irgendwo einen Tippfehler hast.

Gruß thuemmy
 
$schreiben = mysql_query("UPDATE user SET vorname = '$vorname', nachname = '$nachname', alter = $alter, email = '$email' WHERE username LIKE '$username'");
if ($schreiben == true) {
echo "Benutzerdaten erfolgreich geändert.";
}
else {
echo "Sie konnten ihre Daten nicht ändern.<br />".mysql_error();
}
 
Das Wort "alter" ist ein MySQL-Befehl. Wenn Du eine Spalte so nennst musst Du diesen Namen entsprechend mit Backticks umgeben:

Code:
UPDATE user SET vorname = '$vorname', nachname = '$nachname', `alter` = $alter, email = '$email' WHERE username LIKE '$username'

Btw. würde ich auch alle Variablen nicht in der Form einfügen. Umgib sie jeweils mit der PHP-Funktion mysql_real_escape_string(). Machst Du das nicht könnte die Eingabe von z.B. "Goa'uld" beim Vornamen zu einem MySQL-Fehler führen.

Code:
UPDATE user SET vorname = '".mysql_real_escape_string($vorname)."', nachname = '".mysql_real_escape_string($nachname)."', `alter` = '".mysql_real_escape_string($alter)."', email = '".mysql_real_escape_string($email)."' WHERE username LIKE '".mysql_real_escape_string($username)."'
 
wenigstens abscheiben sollte man können, dein code ist wieder anders als der von threadi.

PHP:
$schreiben = mysql_query("UPDATE user SET vorname = '$vorname', nachname = '$nachname', alter = $alter, email = '$email' WHERE username LIKE '$username'");
ist totaler tinnef. die hochkommas stimmen überhaupt nicht.

1.
variablen unter single quotes ergibt was ??
2.
single quotes innerhalb von double quotes ergibt was ??
3.
strings werden mit variablen wie verbunden ?
 
Schlag mich, sollte ich doch falsch liegen, aber bei den Single Quotes handelt es sich ja nicht um solche, die einen String beginnen. Der String ist in Double Quotes eingeschlossen, also werden die Variablen tatsächlich durch ihre Inhalte aufgelöst, und ein Verbinden eines Strings mit den Variablen über "." ist nicht notwendig.
 
Hi! Iwie habe ich wieder ein Problem (anderes) mit Update. Also führe ich einfach das Thema weiter, statt ein neues zu öffnen!
Fehlermeldung:
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 'WHERE id = 0' at line 4
Text:
$sql = mysql_query("UPDATE schiff SET brand_1 = ".$brand_1.", brand_2 = ".$brand_2.", brand_3 = ".$brand_3.",
brand_4 = ".$brand_4.", brand_5 = ".$brand_5.", brand_6 = ".$brand_6.", brand_7 = ".$brand_7.",
sektor_1 = ".$sektor_1.", sektor_2 = ".$sektor_2.",
sektor_3 = ".$sektor_3.", sektor_4 = ".$sektor_4." WHERE id = 0");
Hoffe ihr könnt mir helfen :D

Viele Grüße
Jonathan
 
Setz mal alle Werte in einfache Anführungszeichen. Aus deinem Code sieht man leider nicht was dort für Werte eingetragen werden. Es könnte sein, dass dort Zeichen drinne stehen die das Statement unbrauchbar machen.
 
Die Werte sind einfache Zahlen. Deshalb bringen die Anführungszeichen nichts.
Außerdem hat ja nichts mit Where zu tun...

Viele Grüße
Jonathan
 
Das er WHERE anmeckert kann ein Folgefehler sein. Zeig also bitte mal das Statement wie es an MySQL übergeben wird, nicht den PHP-Code.
 
ja, es gibt id mit 0 :D Es ist eine Tabelle wo kein INSERT INTO hinsoll.. also id (der Primärschlüssel) zählt nicht weiter!
1. Genau gesagt weiß ich noch nicht mal so genau was ein Statement ist, aber ich kanns mir vorstellen - Ich glaube die Werte die in die Tabelle sollen...
2. Die Werte sind immer nur 1 oder 2. Deshalb haben die Spalten auch nur INT(1) jeweils...

Viele Grüße
Jonathan
 
Bau mal das

Code:
$sql = mysql_query("UPDATE schiff SET brand_1 = ".$brand_1.", brand_2 = ".$brand_2.", brand_3 = ".$brand_3.",
    brand_4 = ".$brand_4.", brand_5 = ".$brand_5.", brand_6 = ".$brand_6.", brand_7 = ".$brand_7.",
    sektor_1 = ".$sektor_1.", sektor_2 = ".$sektor_2.",
    sektor_3 = ".$sektor_3.", sektor_4 = ".$sektor_4." WHERE id = 0")

so um:

Code:
$sqlquery = "UPDATE schiff SET brand_1 = ".$brand_1.", brand_2 = ".$brand_2.", brand_3 = ".$brand_3.",
    brand_4 = ".$brand_4.", brand_5 = ".$brand_5.", brand_6 = ".$brand_6.", brand_7 = ".$brand_7.",
    sektor_1 = ".$sektor_1.", sektor_2 = ".$sektor_2.",
    sektor_3 = ".$sektor_3.", sektor_4 = ".$sektor_4." WHERE id = 0"
echo $sqlquery;
$sql = mysql_query($sqlquery);

Und zeig mal die Ausgabe her. Btw.: das was da in der Variable $sqlquery gespeichert wird ist das SQL-Statement.
 
Hm... Danke für die Tipps, habe aber schon die ganze Datei nochmal neu geschrieben und dann mit der alten verglichen... Naja, also mir ist iwie der Fehler unterlaufen, dass ich total falsche Variablen gesetzt habe, die garnicht zu dem Formular passten *peinlich*..

Viele Grüße
Jonathan
 
Tjo, hättest Du meine letzte Variante schon eher mal ausgetestet wärst du vielleicht eher drauf gekommen ;) Aber schön, dass es nun geht :-D
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben