2016-04-03 2 views
0

中に、前回の結果を引っ張る:3つの剣、5本の短剣などMySQLのデータのみ、私はテーブルから複数の行を引き出し、この標準にそれらをフォーマットしていJSON配列

まあ、私はにそのデータを置くしようとすると、

$get_weapons = mysql_query("SELECT 
    O.player_id, 
    O.item_id, 
    O.name, 
    O.attack, 
    O.defense, 
    O.type, 
    O.owned, 
    (SELECT 
     sum(owned) FROM items_owned 
    WHERE owned <= O.owned AND player_id=$id) 'RunningTotal' 
FROM items_owned O 
HAVING RunningTotal <= $mob_avail 
ORDER BY attack DESC"); 
// Get Weapon Info 
while($weapon = mysql_fetch_array($get_weapons)){ 
    $weapon_id = $weapon['item_id']; 
    $weapon_name = $weapon['name']; 
    $weapon_attack = $weapon['attack']; 
    $weapon_defense = $weapon['defense']; 
    $weapon_owned = $weapon['owned']; 
    // Formatting Weapons Message 
    $weapon_message = 'You Used: '.$weapon_owned.' '.$weapon_name.'\'s, '; 
} 
$data[] = array('weapons'=>$weapon_message); 
echo json_encode($data); 

私は理解して:[{"weapons":"You Used: 3 Rusty Dagger's, 2 Swords"}]

ここでは、whileループの内部で完全に表示されます私は現在使用しているクエリ、です:JSON配列、それだけで、それは言うべきこの[{"weapons":"You Used: 3 Rusty Dagger's, "}]として最後の結果を引っ張っていますそれは$data配列はwhileループの外にありますが、合計で1つの配列しか必要ないため、この問題を解決するために何をすべきかに固執しています。どんな助けも素晴らしいだろう

+0

あなたのwhileループが各ループ上の内部の変数を上書きします:
は、ここで参考答えです。静的変数ではなく配列に格納する必要があります。例:$ weapon_id [$ i] = $ weapon ['item_id']; whileループの最後に$ i ++を置く。 whileループの後で配列にアクセスします。 – Matt

+0

whileループ内の配列に武器をarray_pushする必要があります。その後、配列内の発生を数えます。それ以降は、whileループの後にメッセージを設定することができます。 – cpugourou

+0

@Matt私はあなたが何を意味するのか混乱しています。そして突然すべてのクエリが機能していませんが、データベース内で同じクエリをタイプし、データベース内で動作しましたが、PHPファイルもはやデータを出力する必要はありません。彼らは何らかの理由がありますか? –

答えて

0

静的変数を1つ追加してから、結果をメッセージに追加する必要があります。

$get_weapons = mysql_query("SELECT O.player_id, O.item_id, O.name, O.attack, O.defense, O.type, O.owned, (
     SELECT sum(owned) FROM items_owned WHERE owned <= O.owned AND player_id=$id) 'RunningTotal' FROM items_owned O HAVING RunningTotal <= $mob_avail ORDER BY attack DESC"); 
     // Initialize the message 
     $weapon_message = 'You Used: '; 
     // Get Weapon Info 
     while($weapon = mysql_fetch_array($get_weapons)){ 
      $weapon_id = $weapon['item_id']; 
      $weapon_name = $weapon['name']; 
      $weapon_attack = $weapon['attack']; 
      $weapon_defense = $weapon['defense']; 
      $weapon_owned = $weapon['owned']; 
      // Formatting Weapons Message 
      $weapon_message = $weapon_message.$weapon_owned.' '.$weapon_name.'\'s, '; 
     } 
     $data[] = array('weapons'=>$weapon_message); 
     echo json_encode($data); 
関連する問題