PHP Variable als DB-Feldname, wie ausgeben?

M

Mr. Snoot

Gast
Hü,

ich habe in einer DB Spalten mit den Wochentagen Mo-So als Feldname.

Die SQL-Abfrage geht ja noch:
PHP:
$abfrage = "SELECT datei, '$tag' FROM pdf WHERE id = '$i'";
Aber wie geb ich denn den Wert von $tag nun aus?
PHP:
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
  $counter = $row->$tag; // !?!?
}
:confused_alt:
 
Hm, ein Fehler kommt nicht, aber es klappt nicht.

$row->{$tag} sollte dann um 1 erhöht werden - tut sich aber nichts.

PHP:
$counter = $row->{$tag};
$counter++;
$aendern = "UPDATE pdf SET '$tag' = '$counter' WHERE id = '$i'";
$update = mysql_query($aendern);
 
wieso benutzt du nicht einfach mysql_fetch_array o.ä.? diese sind viel leichter handhabbar als einzelne objekte. ansonsten kannst du auch den query ändern:
$abfrage = "SELECT datei, '$tag' AS Tag FROM pdf WHERE id = '$i'";
damit benennst du die spalte einfach um. sowas braucht man z.b. auch für berechnungen oder aliase in sql.
 
AW: Re: Variable als DB-Feldname, wie ausgeben?

Irgendwie ist mir fetch_object am sympatischsten :D

Deine AS-Variante klingt eigentlich gut - hab ich nicht dran gedacht - aber es geht auch nicht.

Ich muss mal eben das Script umbauen, damit ich mir die Sache via echo ausgeben kann.
 
Du darfst in der QUery $tag NICHT in Anführungszeichen setzen.

$abfrage = "SELECT datei, $tag FROM pdf WHERE id = '$i'";
$aendern = "UPDATE pdf SET $tag = '$counter' WHERE id = '$i'";

ODER einfacherer:

UPDATE pdf SET $tag = $tag + 1 WHERE id = '$id'
 
Das mit den Anführungszeichen wäre meine nächste Frage gewesen: wann brauch ich die (bei '$i' z.B.), und wann nicht?

Wenn ich mir allerdings $row->tag (nach $tag AS tag) ausgeben lassen, ergibt das nicht den Wert des Feldes, sondern den Feldnamen; in meinem Fall Samstag, der Wert wäre aktuell 0. Steh ich gerade total am Schlauch?
 
Zuletzt bearbeitet:
WIe gesagt: Anführungsstriche weg. Wenn du SELECT 'Samstag' as tag ausführst, ist tag = Samstag ;)

Feldnamen IMMER ohne Anführungszeichen, FeldWERTE (z.B. bei SET, WHERE, etc) meistens mit, Zahlen können aber auch ohne Anführungszeichen angegeben werden.
 
Zuletzt bearbeitet:
Okay, jetzt zählt er. Vielen Dank.

Jetzt muss ich nich rausfinden, warum er +2 zählt :D
 
Zurück
Oben