如何在php中显示mysql数据库中的值而不重复值

如何在php中显示mysql数据库中的值而不重复值,php,mysql,Php,Mysql,当Iam显示表中的数据库值时,它只是根据内容重复它们。第一个表是内容 id | category_id | name ----------------------------- 1 | 2 | Jason 2 | 1 | Richard 3 | 2 | John 类别表:- id | name --------- 1 | Manager 2 | Employee 我使用查询: $query=

当Iam显示表中的数据库值时,它只是根据内容重复它们。第一个表是内容

 id | category_id  |  name
-----------------------------
 1  |     2        |  Jason
 2  |     1        |  Richard
 3  |     2        |  John
类别表:-

 id | name
 ---------
  1 | Manager
  2 | Employee
我使用查询:

$query=mysql_query("SELECT * FROM content");
while($row=mysql_fetch_array($query)){
                 $data[] = array('id'=> $row['id'],
                                'category_id' => $row['category_id'], 
                                'name' => $row['name']
                           );
            }
  for($i=0;$i<count($data);$i++){
     echo $data[$i]['category_id'];
     echo $data[$i]['name']."<br/>";
  }

  OUTPUT:-
  2 Jason 
  2 John
  1 Richard
现在,当回显结果时,它向我显示category_id 2次,其中category_id=2的名称为2,但我只想显示category_id 1次,其对应的category_id=2的名称。请帮忙。

试试这个

从内容中选择DISTINCT(*)
或者您可以更具体地使用ie DISTINCT(columnname)

试试这个

从内容中选择DISTINCT(*)
或者您可以更具体地使用ie DISTINCT(columnname)

使用此查询:

SELECT id, category_id, GROUP_CONCAT(name SEPARATOR ' ') AS name
FROM content
GROUP BY category_id
有关如何使用GROUP BY和GROUP_CONCAT的快速教程,请参见此处:

使用此查询:

SELECT id, category_id, GROUP_CONCAT(name SEPARATOR ' ') AS name
FROM content
GROUP BY category_id
有关如何使用GROUP BY和GROUP_CONCAT的快速教程,请参见此处:


你不应该使用mysql,因为它已经被弃用了,所以为了帮助你,我用
PDO
做了这件事,以表明它不像你想象的那么令人畏惧

到数据库的PDO连接:

try{
    $db = new PDO ('mysql:host=YourHost;dbname=YourDatabaseName', 'YourDatabaseUserName', 'YourDatabasePassword');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
    echo $e->getMessage();
    die();
}
上述连接使用a
try
catch
,通过使用
getMessage()
函数删除大量不需要的信息,可以使任何错误更清晰、更易于阅读

您在PDO中要查找的查询:

$sql = "SELECT GROUP_CONCAT(name SEPARATOR ' ') AS names FROM yourtable GROUP BY category_id";
$query = $db->query($sql);
$results = $query->fetchAll(PDO::FETCH_OBJ);

foreach($results as $result){
    echo "<pre>", ($result->names), "</pre>";
}
$sql=“按类别id从表组中选择组(名称分隔符“”)作为名称”;
$query=$db->query($sql);
$results=$query->fetchAll(PDO::FETCH_OBJ);
foreach($results作为$result){
回显“”($result->name),“”;
}
这是使用
PDO
查询数据库的最基本方法,但如果您开始这样使用它,您会发现更容易开发更深入、更安全的方法,将数据放入数据库并从数据库中取出数据,这有助于防止sql注入


希望这是一点值得思考的东西,有助于让您转向更安全的API。

您不应该使用
mysql
,因为它已经被弃用了,所以为了帮助您,我用
PDO
做了这件事,以表明它不像您想象的那么令人畏惧

到数据库的PDO连接:

try{
    $db = new PDO ('mysql:host=YourHost;dbname=YourDatabaseName', 'YourDatabaseUserName', 'YourDatabasePassword');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
    echo $e->getMessage();
    die();
}
上述连接使用a
try
catch
,通过使用
getMessage()
函数删除大量不需要的信息,可以使任何错误更清晰、更易于阅读

您在PDO中要查找的查询:

$sql = "SELECT GROUP_CONCAT(name SEPARATOR ' ') AS names FROM yourtable GROUP BY category_id";
$query = $db->query($sql);
$results = $query->fetchAll(PDO::FETCH_OBJ);

foreach($results as $result){
    echo "<pre>", ($result->names), "</pre>";
}
$sql=“按类别id从表组中选择组(名称分隔符“”)作为名称”;
$query=$db->query($sql);
$results=$query->fetchAll(PDO::FETCH_OBJ);
foreach($results作为$result){
回显“”($result->name),“”;
}
这是使用
PDO
查询数据库的最基本方法,但如果您开始这样使用它,您会发现更容易开发更深入、更安全的方法,将数据放入数据库并从数据库中取出数据,这有助于防止sql注入


希望这是一点值得思考的东西,有助于让您转向更安全的API。

试试这种方法,它对我很有用:

$query=mysql\u query(“选择计数(*)、类别id、名称、,
组_CONCAT(名称分隔符“”)作为内容中的名称
其中类别id=1或类别id=2按类别id分组
按类别分类的订单(“id描述”);
while($row=mysql\u fetch\u array($query)){
echo$row['category_id']。“$row['name']。”
”; }

另外,请简要介绍一下被弃用的
mysql.*
函数


使用,或者,它们更安全。

试试这种方法,它对我很有效:

$query=mysql\u query(“选择计数(*)、类别id、名称、,
组_CONCAT(名称分隔符“”)作为内容中的名称
其中类别id=1或类别id=2按类别id分组
按类别分类的订单(“id描述”);
while($row=mysql\u fetch\u array($query)){
echo$row['category_id']。“$row['name']。”
”; }

另外,请简要介绍一下被弃用的
mysql.*
函数


使用,或者说,它们更安全。

mysql\u query
是一个过时的接口,不应该在新的应用程序中使用,因为它将在未来的PHP版本中被删除。一个现代的替代品。如果您是PHP新手,可以通过类似的指南来帮助您解释最佳实践。@tadman是的,我知道,但我想使用mysql\u查询。您的查询应该很好,您可以向我们展示您的结果吗?“现在,当回显结果时,它会向我显示两次category_id,其中category_id=2的名称为2,但我只想显示category_id 1次,其对应的category_id=2的名称。“-我很难理解这一点。如果你不想重复,请使用DISTINCT。在你的
选择中使用
DISTINCT
-编辑:等等,还有别的,但我必须考虑一下。
mysql\u query
是一个过时的接口,不应该在新的应用程序中使用,因为它将在未来的PHP版本中被删除。一个现代的替代品。如果您是PHP新手,可以通过类似的指南来帮助您解释最佳实践。@tadman是的,我知道,但我想使用mysql\u查询。您的查询应该很好,您可以向我们展示您的结果吗?“现在,当回显结果时,它会向我显示两次category_id,其中category_id=2的名称为2,但我只想显示category_id 1次,其对应的category_id=2的名称。“-我很难理解这一点。如果你不想重复,使用不同的。在代码中使用<代码>不同的< /代码> >选择< /COD> >编辑:等等,还有别的事情,但是我必须考虑一下。嗨,杰森,如果这个或任何答案已经解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这么做。嗨,杰森,如果这个或任何答案已经解决了