2016-05-24 20 views
0

Ich habe keine Ahnung, wie das geht. Ich habe nach Beispielen gesucht, aber es ist alles vage für mich, die Variable @ zu verwenden, ich habe keine Ahnung, was das ist und wie ich meine Antwort nachschlagen kann.Wählen Sie Spalte als Variable

Ich habe diese Variable $slotname, die weapon oder amulet oder irgendetwas sein kann. In meiner Datenbank ist es weapon_name oder amulet_name das ist, warum die ._name. nach den post

$slotname = $_POST['slot'].'_name'; 
$naam = 'Player1'; 
$sql = $db->prepare("SELECT @slotname FROM player WHERE naam = :naam"); 
$sql->execute(array(":naam" => $naam)); 
$fetch = $sql->fetch(); 

Also in diesem Fall $slotname = weapon_name und ich die Spalte weapon_name vom Benutzer Player1 auswählen mag, aber ich habe keine Ahnung, wie dies zu tun. Irgendwelche Tipps?

+0

$ db-> query ("SET @ slotname = $ slotname"); Vorbereiten der Anweisung –

+0

Da parametrisierte/vorbereitete Abfragen funktionieren, können Sie keinen Wert an die ausgewählten Spalten oder die ausgewählte Tabelle binden. http://stackoverflow.com/questions/182287/can-php-pdo-statements-accept-the-table-or-column-name-as-parameter –

Antwort

1

Ihre Datenbankstruktur ist im Wesentlichen falsch.

Es sollte nicht so etwas wie slot_name Feld geben.

Es sollte eine eindeutige Tabelle Schlitze sein, wo alle Slots gespeichert werden, und von Werten ausgewählt, das Feld nicht Namen.

+0

Und wie mache ich das? Jeder 'Slot' benötigt einen Namen und einen Wert. Zum Beispiel 'weapon_slot'' 3' 'amulet_slot'' 2' Ich habe keine Ahnung, was du mit deiner Antwort meinst. Könntest du es vielleicht erklären? –

+0

Es ist schon klar - ein weiterer Tisch. das besteht aus Spalten 'char_id',' slot', 'item_id'. Aus dieser Tabelle können Sie leicht alle Geräte auswählen –

-2
sql = $db->prepare("SELECT ".$slotname." FROM player WHERE naam = :naam"); 
+0

Code-only-Antworten werden abgeraten. –

+0

funktioniert nicht @netham es gibt nur den gleichen Namen zurück. Wenn $ slotname = waffenname ist, gibt es folgendes zurück: Array ([Waffenname] => Waffenname [0] => Waffenname), während es Array zurückgeben sollte ([Waffenname] => Goldenes Schwert [0] => Goldenes Schwert) –

+0

@ ʰᵈˑ Ich weiß , aber vielleicht, wenn Sie die Frage und die Antwort sehen, wird die Erklärung nicht helfen. So einfach ist das. Wenn es möglich ist, und Sie daran glauben, begrüße ich Sie, die Bearbeitungsschaltfläche zu verwenden und die Antworten zu bearbeiten, bevor Sie einfach den Vorgang ablehnen, weil Sie einen Code nur als Antwort gesehen haben. Ist es immer schwarz und weiß? Nein, denke ich. – Netham