如何使用mysql和php选择多行?

如何使用mysql和php选择多行?,php,mysql,json,Php,Mysql,Json,我有两张桌子 广告 A图像 这里的tableadsid和tableadImagesadsId是相同的。在这里,我必须从表ads和adImages中选择所有行,并以json格式显示 我的代码看起来: $query="SELECT a.*, b.images FROM `ads` AS a INNER JOIN `adImages` AS b ON a.id = b.adsId"; $result=mysql_query($query); $value = mysql_num_rows($re

我有两张桌子

  • 广告
  • A图像
  • 这里的tableadsid和tableadImagesadsId是相同的。在这里,我必须从表adsadImages中选择所有行,并以json格式显示

    我的代码看起来:

    $query="SELECT a.*, b.images FROM `ads` AS a INNER JOIN `adImages` AS b ON a.id = b.adsId";
    
    $result=mysql_query($query);
    $value = mysql_num_rows($result);
    if($value>=1)
    {   
         while($row = mysql_fetch_array($result)) 
        {
            $details[] = array(
    
            'id' => $row['id'], 
            'location' => $row['location'],
            'title'=>$row['title'],
            'mobile' => $row['mobile'],
            'description' => $row['description'],
            'category' => $row['category'],
            'images' =>'http://greenwma.com/dev/uploads/'.$row['images'],
            );
        }
        echo  json_encode($details);
    }
    
    其输出json如下所示:

    [{"id":"10","location":"9.982852,76.300637","title":"Ggg","mobile":"5555555","description":"Google","category":"BusMedia","images":"http:\/\/greenwma.com\/dev\/uploads\/MapCapture2016062319:07:39.jpg{"id":"10","location":"9.982852,76.300637","title":"Ggg","mobile":"5555555","description":"Google","category"BusMedia","images":"http:\/\/greenwma.com\/dev\/uploads\/MapCapture2016-06-23 17:27:05.jpg"},{"id":"11","location":"9.962439,76.305337","title":"Test","mobile":"898566899","description":"Test","category":"Bus Shelters","images":"http:\/\/greenwma.com\/dev\/uploads\/MapCapture2016-06-23 19:15:16.jpg"},{"id":"11","location":"9.962439,76.305337","title":"Test","mobile":"898566899","description":"Test","category":"Bus Shelters","images":"http:\/\/greenwma.com\/dev\/uploads\/MapCapture2016-06-23 19:08:50.jpg"},{"id":"11","location":"9.962439,76.305337","title":"Test","mobile":"898566899","description":"Test","category":"Bus Shelters","images":"http:\/\/greenwma.com\/dev\/uploads\/MapCapture2016-06-23 19:07:39.jpg"}]
    
    这里的问题是,id、位置、标题、手机、描述、类别对同一adsId上的每个图像重复

    我需要的是,我必须以这种格式获取json

    [{"id":"10","location":"9.982852,76.300637","title":"Ggg","mobile":"5555555","description":"Google ","category":"Bus Media","images":"http:\/\/greenwma.com\/dev\/uploads\/MapCapture2016-06-23 19:07:39.jpg","http:\/\/greenwma.com\/dev\/uploads\/MapCapture2016-06-23 17:27:05.jpg"},{"id":"11","location":"9.962439,76.305337","title":"Test","mobile":"898566899","description":"Test","category":"Bus Shelters","images":"http:\/\/greenwma.com\/dev\/uploads\/MapCapture2016-06-23 19:15:16.jpg","http:\/\/greenwma.com\/dev\/uploads\/MapCapture2016-06-23 19:08:50.jpg","http:\/\/greenwma.com\/dev\/uploads\/MapCapture2016-06-23 19:07:39.jpg"}]
    
    也就是说,我必须在单个json对象中获得所有用逗号分隔的图像。为此,我应该在上面的代码中做哪些更改

    您可以使用CONCAT()&和子查询在一个查询和较少的循环中完成

    SELECT a.*, GROUP_CONCAT(images) images FROM (
    SELECT a.*, CONCAT('http://greenwma.com/dev/uploads/', b.images) images
    FROM `ads` AS a 
    INNER JOIN `adImages` AS b ON a.id = b.adsId 
    ) tbl
    GROUP BY id
    
    您可以将CONCAT()与子查询一起使用,在一个查询和较少的循环中完成此操作

    SELECT a.*, GROUP_CONCAT(images) images FROM (
    SELECT a.*, CONCAT('http://greenwma.com/dev/uploads/', b.images) images
    FROM `ads` AS a 
    INNER JOIN `adImages` AS b ON a.id = b.adsId 
    ) tbl
    GROUP BY id
    

    为什么您仍在使用mysql_*函数?你知道他们不赞成吧?同意。无论您出于什么原因使用
    mysql\u xxx()
    函数,您都需要停下来学习如何使用PDO库。
    mysl_xx()
    函数已经从最新的PHP版本中删除,并且在那之前的十多年中一直被认为是不好的做法。你的代码严重落后于时代。为什么你还在使用mysql_*函数?你知道他们不赞成吧?同意。无论您出于什么原因使用
    mysql\u xxx()
    函数,您都需要停下来学习如何使用PDO库。
    mysl_xx()
    函数已经从最新的PHP版本中删除,并且在那之前的十多年中一直被认为是不好的做法。你的代码严重落后于时代。