2017-10-28 28 views
-4

我有这个在我的数据库的例子:如何在MySQL数据库上查询此信息?

tA------tB 
lewbr - blabla1 
lewbr - blabla2 
lewbr - blabla3 
blabla1 - lewbr 
blabla2 - lewbr 
blabla3 - lewbr 

什么我需要做SELECTlewbr得到所有文本?

例子:List of LewBr: blbla1, blabla2, blabla3

我在一家软件游戏有这个在我的PHP:

public function getAllFriends($oi1) { 
      $a = $this->plugin->provider->db->query("SELECT * FROM amigos WHERE tA='$oi1'"); 
      $b = mysqli_fetch_assoc($a); 
      return $b; 
    } 

EVENT

    $msg = null; 
        foreach($this->getAllFriends($player) as $friend => $p) { 

         if($friend == 'p2') { 
          $msg .= "$p, "; 
         } 
        } 
        $sender->sendMessage("HI: $msg"); 
        return; 

但它只返回1个播放列表的..像

List of LewBr: blabla1, 
+0

遗憾的英语不好。 –

+0

嗨,你误解了mysqli_fetch_assoc。该函数将从查询执行中返回1行结果。不是全套。所以你的事件在事件循环1行,所以1结果。在你的函数中返回$ a并循环。 – Nic3500

+0

我已经测试过你说什么,也不太适用..:/ –

回答

0

如果你想在与逗号分隔值列表中的同一行中的所有值,你可以使用GROUP_CONCAT

"SELECT group_concat(tb) as my_amigos 
FROM amigos WHERE tA='$oi1' 
group by tA" 

,你可以很容易地obutain列表中没有的foreach ...只是访问my_amigos列如:

$row = mysqli_fetch_assoc($a); 
    var_dump($row['my_amigos']); 

,如果你不希望逗号作为分隔符可以使用空间如:

"SELECT group_concat(tb SEPARATOR ' ') as my_amigos 
FROM amigos WHERE tA='$oi1' 
group by tA" 
+0

我在这件事上做了什么? –

+0

只是保持它? –

+0

答案更新了一个建议希望是明确的.. – scaisEdge