2016-05-24 3 views
0

私はこれを行う手掛かりがありません。私は例を探しましたが、それは@variableを使って私にとっては漠然としています。私はそれが何であるか、そして私の答えをどのように調べることができるのかという手掛かりはありません。変数を列として選択

私はこの変数$slotnameを持っています。これはweaponまたはamuletなどです。この場合$slotname = weapon_nameでそう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(); 

._name.とは、私は、ユーザーPlayer1から列weapon_nameを選択したいが、私はこれを行う方法見当もつかない理由 は私のデータベースでは、weapon_nameまたはamulet_nameのthatsです。 ヒント?

+0

$ db-> query( "SET @ slotname = $ slotname"); prepare文の前に –

+0

パラメタ化/準備された問合せが機能するため、列selectまたはその表から選択している表に値をバインドすることはできません。 http://stackoverflow.com/questions/182287/can-php-pdo-statements-accept-the-table-or-column-name-as-parameter –

答えて

1

あなたのデータベース構造は本質的に間違っています。

slot_nameフィールドのようなものはありません。

スロットすべてのスロットが格納されなければならない、と、値ではなく、フィールド名によって選択別個のテーブルが存在すべきです。

+0

そしてどうしたらいいですか?すべての「スロット」には名前と値が必要です。例えば ​​'weapon_slot'のように' '3'' amulet_slot'' 2'あなたの答えが何を意味するのかわかりません。おそらく説明できますか? –

+0

もう一つのテーブルです。 'char_id'、' slot'、 'item_id'の列から構成されています。このテーブルから簡単に任意の機器を選択することができます –

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

コードのみの回答はお勧めしません。 –

+0

@nethamが動作していないのは同じ名前を返すだけです。 $ slotname = weapon_nameの場合、Array([weapon_name] =>ゴールデンソード[0] =>ゴールデンソード)を返す必要がある間、Array([weapon_name] => weapon_name [0] => weapon_name)を返します。 –

+0

@ᵈˑᵈˑしかし、もしあなたが質問と答えを見たら、どんな説明をしても助けにならないでしょう。それは簡単です。可能であれば、あなたはそれを信じています。編集ボタンを使用して回答を編集する前に、単純にコードを解答するだけでダウン投票することを歓迎します。それはいつも白黒ですか?いいえ、そうです。 – Netham