Unbekante Spalte, obwohl sie da ist

bunterhund

Grünschnabel
Hallo,
Ich hab mal wieder eine sehr lange Leitung und find dern Fehler nicht. Ich hab's schon mit ein paar Variationen ausprobiert, aber ohne Erfolg. Mein Problem ist im momment folgendes, ich will etwas in der Datenbank ändern, aber dann kommt die Fehlermeldung ' Unknown column 'Test' in 'where clause' '. Vieleicht könnt ihr mir ja weiterhelfen. Mein aktueller Code dazu ist...
PHP:
$update = "UPDATE test SET $b_name=$b_set WHERE user=$nick";
mysql_query($update) or die(mysql_error());
und die Datenbank dazu sieht so aus...
user|name|anzahl|
und der inhalt.
Test|Bild|0|
 
PHP:
$update = "UPDATE test SET name='".$b_set."' 
WHERE user='".$nick."';";  
mysql_query($update) or die(mysql_error());

Meinst du das eventuell so?

Gruß
Stefan
 
"name" braucht und kann nicht variieren!

PHP:
$update = "UPDATE test SET name='".$b_set."' 
WHERE user='".$nick."';";  
mysql_query($update) or die(mysql_error());

Wenn du das so eingibst, legt er anhand der WHERE Bedinung fest, in welcher Zeile er ändert und nimmt sich genau dort das Attribut "name" vor.

Gruß
Stefan

PS: jede Zeile hat ein "name"
 
Hab mich etwas vertan :-( 'tschuldigung. Die Datenbank sieht nämlich so aus:
|user|bild|bilderrahmen|pinsel|
und die einträge dann:
|Test|0|0|0|
So, und nun muss 'name' variabel sein also '$b_name'. So müsste das jetzt stimmen :-(
Ich habe es grade eben nochmal mit folgendem probiert
PHP:
$update = "UPDATE fc_buildings SET '".$b_name."'='".$b_set."' WHERE user='".$usernick."';";
mysql_query($update) or die(mysql_error());
doch dann kam die 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 ''bild'='1' WHERE user='Test'' at line 1.'
 
WEnn du dir den Query per echo ausgeben lässt siehst du auch schon den Fehler.
Der Spaltenname, Bild, steht in Singlequotes das darf nicht sein.
Desweitern verstehe ich nicht,wieso du den Spaltennamen dynamisch setzen musst, veränderst du konsequent dieDatenbank Strukur?

Du solltest dich auf jeden Fall mal mit den Grundlagen von Datenbanken inbesondere MYSQL beschäftigen.
 
Zuletzt bearbeitet:
Versteh ich das jetzt richtig, dass du ehemals "name" deshalb variabel haben möchtest, weil du eigentlich 3 Einträge ändern möchtest?

Der Befehl sollte in dem Falle lauten:
PHP:
$update = "
UPDATE test SET bild='".$b1."', bilderrahmen='".$b2."', pinsel='".$b3."' 
WHERE user='".$nick."';";  
mysql_query($update) or die(mysql_error());

Gruß
Stefan
 
Nein, ich möchte nur deshalb die Variabele in $update haben, weil dadurch einiges an Schreibkram gespart wird. In $b_name wird der 'Name' der zu erlangenden Sache gespeichert und sollte ja eigentlich dann in der Datenbank verändert werden. Es handelt sich hierbei um ein Browsergame, falls das nötig ist zu erwähnen.
 
Nimm doch einfach endlich die Singlequotes raus.
Diese gehören nur dahin wenn du einen String übergibst, ist ein Tabellenname ein String?
Also:

PHP:
$update = "UPDATE fc_buildings SET ".$b_name."='".$b_set."' WHERE user='".$usernick."';";
 
so ok um hier mal klarheit zu schaffen

spalten und werte MÜSSEN immer getrennt geschrieben werden

wenn du z.b. reservierte schlüsselwörter benutzt dann müsstest du die spalte mit sogenannten backquotes schreiben
`spalte`
wenn es kein reserviertes schlüsselwort ist kannste es ohne ihnen schreiben
spalte
wenn du einen wert übergeben oder darrauf abprüfen willst dann musste es als string verpacken
'string'

INSERT INTO $TABLE WHERE $SPALTE='test'
INSERT INTO `$TABLE` WHERE `$SPALTE`='test'

die einzigsten unterschiede wie gehabt
entweder string '$var' , reserviertes schlüsselwort `$var` der als normale spalte/tabelle $var
 
Zurück