fürgewöhnlich greife ich auf die DB ueber folgende Syntax zu:
mysql_query(„SELECT * FROM beruf WHERE beruf=“.$wert."");
funktioniert ja.
jetzt ist es aber noetig geworden, auf eine variable SPALTE zuzugreifen.
also z.B. ueber
mysql_query(„SELECT „.$faehigkeit.“ FROM beruf WHERE beruf=“.$wert."");
$faehigkeit hat werte wie bspw. „grube“ oder „maurer“ (natuerlich ohne die „“)
Leider hab ich hierzu keinerlei Dokumentation oä gefunden gehabt…
hoffe man kann mir hier helfen, und wenn es nur die aussage ist ‚geht SO nicht‘
Also in $faehigkeit müsste dann die Spalte stehen die du ausgegeben haben willst.
SELECT spalte\_1 FROM tabelle WHERE spalte\_2=$wert
wäre demnach die richtige Syntax. In dem Result was du dann zurückbekommst stehen dann alle Werte drin die in der angegebenen Spalte_1 mit dem Wert der Spalte_2 (wobei Spalte_1 und Spalte_2 auch die gleiche sein können) gefunden werden.
Deine Interpretation der Fehlermeldung ist korrekt. Bau doch Deinen Code doch mal um, statt:
mysql\_query("SELECT ".$faehigkeit." FROM beruf WHERE beruf=".$wert."");
lieber etwas debug-fähiger:
$query="SELECT ".$faehigkeit." FROM beruf WHERE beruf=".$wert;
$result = mysql\_query($sql, $conn);
if (!$result) {
die('Fehler: ' . mysql\_error().'
.$query);
}
Und noch eine kleine Bitte: Benenne Deine Spalten in der Tabelle um oder sag nicht die Bedeutung sondern den Namen der Attribute sonst müssen wir bei der Fehlersuche immer umdenken. Die erste Lösung hätte einen deutlichen Vorteil: Du wüsstest in 2 Wochen auch noch ws Du programmiert hast.
$wert = 'p2'
$query = "SELECT holz FROM skillmax WHERE beruf="' . $wert .'";
Du mußt also nicht $holz schreiben für die Tabelle sondern einfach nur holz.
Und wie mein Vorredner schon sagte, bennen die Tabellenspalten anders sonst weißt du nach 2 Wochen nicht mehr was du da gemacht hast und brauchst ewig um den Code, bsp bei Fehlern zu analysieren.
Beruf ist ein String, daher muss er in der Query in Hochkommas (’).
Dann sähe das so aus:
$ressource=‚holz‘;
$beruf=‚p2‘;
$query=‚SELECT ‚.$ressource.‘ FROM skillmax WHERE beruf=‘’.$beruf.’’;
Nicht große Augen machen - da ich für den Gesamtstring schon einfache Hochkommas benutze, muss ich die in der Query escapen, d.h. Backslashes davor schreiben. Man gewöhnt sich mit der Zeit dran