【问题标题】:How to remove repeat Json information?如何删除重复的 Json 信息?
【发布时间】:2015-10-02 13:13:06
【问题描述】:

数据库:

`--> product table
id  name      cid     uploadKey
1   Cemera     1       7365
2   Notebook   2       7222`

`--> category table
id    catename
1      canon
2      toshiba`


`--> attactments table
id      uploadKey       filepath
1       7365            /img/jdf.png
2       7365            /img/sdsd.jpg`

创建json文件的代码:

$_GET['id']="1";
 $json_response = array();
    if(isset($_GET['id']))
    {
        $id=$_GET['id'];        
 $select = mysql_query("SELECT product.name,category.catename,attactments.filepath FROM product INNER JOIN category ON category.id = product.cid INNER JOIN attactments ON attactments.uploadKey = product.uploadKey where product.id='".$id."'  ");
    while ($row = mysql_fetch_array($select , MYSQL_ASSOC)) {       
        $json_response[] = $row;
         } 
    }
 echo $val= str_replace('\\/', '/', json_encode($json_response));

结果重复信息,如何删除重复我想显示如下:

[{"name":"Cemera","catename":"canon","filepath":"/img/jdf.png"},{"name":"Cemera","catename":"canon","filepath":"/img/sdsd.jpg"}]

我想这样展示,我们如何编辑它:

[{"name":"Cemera","catename":"canon","filepath":"/img/jdf.png","filepath":"/img/sdsd.jpg"}]

【问题讨论】:

标签: php jquery mysql arrays json


【解决方案1】:
Put limit 0,1 at the end of query.
$select = mysql_query("SELECTproduct.name,category.catename,attactments.filepath FROM product INNER JOIN category ON category.id = product.cid INNER JOIN attactments ON attactments.uploadKey = product.uploadKey where product.id='".$id."' lomit 0,1 ");

我认为它有帮助..

【讨论】:

    【解决方案2】:

    你可以GROUP_CONCAT()文件路径,试试下面的代码

    $select = mysql_query("SELECT product.name,category.catename,GROUP_CONCAT(attactments.filepath SEPARATOR ',') AS filepath FROM product INNER JOIN category ON category.id = product.cid INNER JOIN attactments ON attactments.uploadKey = product.uploadKey where product.id='".$id."'  ");
    
    while ($row = mysql_fetch_array($select , MYSQL_ASSOC)) {   
       $row['filepath'] = explode(',',$row['filepath']);
            $json_response[] = $row;
             } 
    

    然后你会得到以下结果

    {"name":"Cemera","catename":"canon","filepath":["\/img\/jdf.png","\/img\/sdsd.jpg"]}
    

    【讨论】:

    • 谢谢你的回答,能不能这样给我[{"name":"Cemera","catename":"canon","filepath":"/img/jdf.png" ,"文件路径":"/img/sdsd.jpg"}]
    • 您希望如何在同一个键中赋予不同的值?有可能吗?
    【解决方案3】:

    所有文件路径都应使用 GROUP_CONCAT 以逗号分隔。像这样

    $select = mysql_query("SELECT product.name,category.catename,attactments.filepath 
    FROM product 
    INNER JOIN category ON category.id = product.cid 
    INNER JOIN(SELECT uploadKey, GROUP_CONCAT(filepath SEPARATOR ',') FROM attactments GROUP BY uploadKey) a ON a.uploadKey = product.uploadKey where product.id='".$id."'  ");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 2021-01-21
      相关资源
      最近更新 更多