2013-06-21 53 views
0

我正在用PHP/MYSQL創建一個小型項目,但我無法讓我的查詢以我需要的方式工作。我有2個表PHP多個條目

表1(字符):

Id, name. 

表2(法術):

Id, char, spell_name. 

我得到的輸出:

Name Spell1 
Name Spell2 
Name Spell3 

但我需要它是:

Name Spell1 
    Spell2 
    Spell3 

這裏是我的查詢:

$query = "SELECT char.name AS name, spells.spell_name AS spell 
       FROM char, spells 
       WHERE (char.id = spells.spell_name)"; 

任何想法?

回答

0

我認爲你必須首先獲得要查詢的角色ID,然後拉出他/她有權訪問的法術。例如:

$char_id = 0; // value would be assigned arbitrarily. 

$query = "SELECT * 
FROM 'spells' s 
WHERE s.char = $char_id;"; 

$result = $pdo->query($query); 

while($row = $result->fetchObj()){ 
    // do something with the spells obj here 
} 

有了SQL,您需要一次抓取完整的行,所以我相信您想要的情況是不可能的。

0

正如Goldentoa11寫道。進行兩次選擇,或使用兩個結果集創建查詢(在一個命令中選擇的次數更多),或接受當前狀態(正常,您可以驗證數據一致性)。我更喜歡當前狀態,但有時使用任何描述的解決方案(基於查詢頻率,結果大小等)。

如果你需要列出這樣的數據,你可以不是使用這樣的:

$currentName = null; 

while ($row = mysql_fetch_object($result)) 
{ 
    if ($currentName != $row->name) 
    { 
     echo "<b>" . $row->name . "</b><br />"; 
     $currentName = $row->name; 
    } 

    echo $row->spell_name . "<br />"; 
}