2013-06-21 50 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 />"; 
}