PHP SQL "UPDATE" Fehler

Andreasb.

Lt. Junior Grade
Registriert
Jan. 2011
Beiträge
271
Hi,
ich hab ein Problem mit einem PHP Code:

PHP:
$level_new = $_SESSION['level'] + 1;
$name = $_SESSION['name'];
$query = "UPDATE user SET `level` = '$level_new' WHERE `name` = '$name'";
$dummy = mysql_query($query);
echo mysql_error();
}
else 
{
?>

Ich bekomme die Fehlermeldung das ich einen Fehler in meiner SQL Syntax habe, in der nähe von ", ich hab schon viel ausprobiert, weiss jemand wo der Fehler liegt?
 
Ich vermute jetzt einfach mal, dass in $name oder $level_new ein böses Zeichen drin steckt. NIEMALS OHNE ESCAPEN!

Siehe mysql_real_escape_string()
 
Kannst du mal ein "echo $query;" machen, bevor du die Query ausführst? Das SQL sieht für mich OK aus, aber vielleicht geht enthalten die eingefügten Variablen ja Werte, die es kaputtmachen.
 
$query besitzt auch den richtigen Wert? Lass dir den mal ausgeben, bevor du ihn losschickst.
 
Die Spaltennnamen nicht in '...

Code:
"UPDATE user SET level = '$level_new' WHERE name = '$name'";
 
$query = "UPDATE user SET `level` = $level_new WHERE `name` = '$name'";

So?
 
@ Pascal_Peter: Die Spaltennamen sind stehen im Accent Grave, nicht in Hochkommas. Ist typisch bei MySQL, in SQLite werden diese mitunter in eckige Klammern gesetzt.
 
Solang die spaltennamen nicht aus reserved words oder komischen zeichen bestehen, braucht es nicht zwingend die "`"
 
Code:
$query = "UPDATE user SET `level` = '. $level_new . ' WHERE `name` = ' . $name. '";

So sollte das funktionieren.

Gruß
MaleBorg
 
@Yuuri, stimmt sry. Habe gerade falsch probiert, mit ` funktionierts natürlich. Danke für die Korrektur.
 
@MaleBorg: Das kommt in PHP aufs Gleiche heraus, da Variablen innerhalb doppelt gequoteter Strings automatisch aufgelöst werden.
 
Die Werte bestehen nur aus Zahlen, hat sonst keiner eine Idee woran es liegen könnte?
 
@maleborg: So würde es genau nicht funktionieren (fehlende schliessende ")! Wennschon so:

PHP:
$query = "UPDATE user SET `level` = '" . $level_new .  "' WHERE `name` = '" . $name .  "'";

Aber eben, käme sonst eigentlich, wie NullPointer schon sagte, auf's gleiche raus.

@Andreasb: Zeig den output von echo $query. irgendwas muss in deinen variablen sein, oder dein code ist nicht der, den wir hier sehen.
 
Zuletzt bearbeitet:
PHP:
$level_new = $_SESSION['level'] + 1; 
$name = $_SESSION['name']; 
$query = "UPDATE user SET `level` = '$level_new' WHERE `name` = '$name'"; 
$dummy = mysql_query($query); 
echo mysql_error();


PHP:
$level_new = $_SESSION['level']+1;

$name = $_SESSION['name'];

$query = "UPDATE `user` SET `level`='".$level_new."' WHERE `name`='".$name."'";

mysql_query($query);
echo mysql_error();

müsste eigentlich funktionieren!

Wurde zuvor eine MySQL Verbindung richtig aufgebaut? Und eine gültige Datenbank ausgewählt?
Ist das Feld das du Updaten willst auch ein Integer? Hat es nen Primary Key?
Gibt es die Variable $name vil schon vorher? Oder die Variable $level_new?
Werden die Werte richtig ausgegeben wenn du
echo "<pre>";
var_dump($level_new);
var_dump($name);
var_dump($query);

machst?

grz
 
Zurück
Oben