Mysql/php SELECT variabel

Hallo,

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‘ :wink:

Danke

Grueße

rueck:
atm bringt er mir KEINE Fehlermeldung.
Allerdings liest er auch nicht den korrekten Wert aus, sondern die 0 (standarteintrag…)…

Hi

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.

War das verständlich?

Gruß Lamer

grundsätzlich verstanden denke ich schon, ja. Danke :wink:

Aber an der Umsetzung hapert es:
http://img3.imagebanana.com/view/0q493oma/beispiel.gif

kleiner ausschnitt aus der DB.

syntax wäre dann ja folgende:
($name waere bspw ‚holz‘, $wert ‚p2‘, wobei beide werte natuerlich variabel sind)

SELECT $name FROM skillmax WHERE beruf=$wert

Unknown column ‚p2‘ in ‚where clause‘
wirft er mir aus => p2 existiert nicht !?

abhilfe? bin erst vor kurzem in mysql eingstiegen, sodass ich ueber die eigenartigkeiten dieses systems noch nicht so informiert bin ;D

Hallo Arsenio,

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.

MfG Georg V.

1 Like

Ich glaube zu wissen was du willst.

Versuch es mal hiermit

$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.

Gruß Lamer

1 Like

Vielen Dank fuer die Hilfe, das Problem hab ich jetzt damit loesen koennen…

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 :wink: