Php 从两个不同的表中选择值,并使用相同的ID打印行中的值

Php 从两个不同的表中选择值,并使用相同的ID打印行中的值,php,mysql,sql,Php,Mysql,Sql,我有这个数据库 表“广告” 表“图片和广告” 现在,我想创建一个php页面,从这两个表中获取值,并按id打印一个广告列表,其中包含一行与广告id相关的图像,用逗号分隔 我写了这段代码 <?php //ENTER YOUR DATABASE CONNECTION INFO BELOW: $servername = "localhost"; $username = "user"; $password = "xxxxxx"; $dbname = "dbname"; // Create conn

我有这个数据库

表“广告”

表“图片和广告”

现在,我想创建一个php页面,从这两个表中获取值,并按id打印一个广告列表,其中包含一行与广告id相关的图像,用逗号分隔

我写了这段代码

<?php
//ENTER YOUR DATABASE CONNECTION INFO BELOW:
$servername = "localhost";
$username = "user";
$password = "xxxxxx";
$dbname = "dbname";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} else {
    echo 'CONNECT TO DB';
}

$sql = "SELECT ADS.ID, IMAGES_ADS.NAME FROM ADS INNER JOIN IMAGES_ADS ON ADS.ID=IMAGES_ADS.ID_ADS WHERE ADS.Visible=1 ORDER BY ID ASC";
$results = $conn->query($sql);

echo '<table>';

if($results->num_rows > 0) {
    while($row = $results->fetch_assoc()) {
        echo '<tr>
                <td>'.$row["ID"].'</td>
                <td>'.$row["NAME"].'</td>
              </tr>';
    }
} else {
    echo '0 rows';
}
echo '</table>';

$conn->close();
?>
但我需要这样的结果:

15  xlasd.jpg, dadsa.jpg
16  dsfsf.jpg
17  ghdfd.jpg, jkyhg.jpg, rerem.jpg
我怎样才能得到这个结果

感谢@Vipin Jain,我将解决方案写在下面:

<?php
//ENTER YOUR DATABASE CONNECTION INFO BELOW:
$servername = "localhost";
$username = "user";
$password = "xxxxxx";
$dbname = "dbname";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} else {
    echo 'CONNECT TO DB';
}

$sql = "SELECT ADS.ID, GROUP_CONCAT(IMAGES_ADS.NAME SEPARATOR', ') as b
        FROM ADS INNER JOIN IMAGES_ADS
        ON ADS.ID=IMAGES_ADS.ID_ADS
        WHERE ADS.Visible=1
        ORDER BY ID ASC";

$results = $conn->query($sql);

echo '<table>';

if($results->num_rows > 0) {
    while($row = $results->fetch_assoc()) {
        echo '<tr>
                <td>'.$row["ID"].'</td>
                <td>'.$row["b"].'</td>
              </tr>';
    }
} else {
    echo '0 rows';
}
echo '</table>';

$conn->close();
?>
您应该使用


你可以通过下面的查询得到-

SELECT a.ID, GROUP_CONCAT(b.NAME)
FROM ADS as a
INNER JOIN IMAGES_ADS as b
ON a.ID=b.ID_ADS 
WHERE ADS.Visible=1 
Group by a.ID;

您将获得按ID分组的行数组

查看使用
group\u concat
…如果使用PHP实现了良好的数组结构,可以吗?您还应该按
ADS.ID
分组,不是吗?是的,我添加了,我当时忘记添加了,非常感谢。我只做了这样的更改:“选择ADS.ID,GROUP_CONCAT(IMAGES_ADS.NAME SEPARATOR',')作为b从ADS内部连接IMAGES_ADS ON ADS.ID=IMAGES_ADS.ID_ADS WHERE ADS.Visible=1 GROUP BY ADS.ID ORDER BY ID ASC”;例如,在php代码中调用“b”别名。
15  xlasd.jpg, dadsa.jpg
16  dsfsf.jpg
17  ghdfd.jpg, jkyhg.jpg, rerem.jpg
<?php
//ENTER YOUR DATABASE CONNECTION INFO BELOW:
$servername = "localhost";
$username = "user";
$password = "xxxxxx";
$dbname = "dbname";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} else {
    echo 'CONNECT TO DB';
}

$sql = "SELECT ADS.ID, GROUP_CONCAT(IMAGES_ADS.NAME SEPARATOR', ') as b
        FROM ADS INNER JOIN IMAGES_ADS
        ON ADS.ID=IMAGES_ADS.ID_ADS
        WHERE ADS.Visible=1
        ORDER BY ID ASC";

$results = $conn->query($sql);

echo '<table>';

if($results->num_rows > 0) {
    while($row = $results->fetch_assoc()) {
        echo '<tr>
                <td>'.$row["ID"].'</td>
                <td>'.$row["b"].'</td>
              </tr>';
    }
} else {
    echo '0 rows';
}
echo '</table>';

$conn->close();
?>
SELECT ADS.ID, GROUP_CONCAT(IMAGES_ADS.NAME)
FROM ADS 
INNER JOIN IMAGES_ADS 
ON ADS.ID=IMAGES_ADS.ID_ADS 
WHERE ADS.Visible=1 
GROUP BY ID 
ORDER BY ID ASC;
SELECT a.ID, GROUP_CONCAT(b.NAME)
FROM ADS as a
INNER JOIN IMAGES_ADS as b
ON a.ID=b.ID_ADS 
WHERE ADS.Visible=1 
Group by a.ID;
$res = [];    
while($row = $results->fetch_assoc()) {
    if (empty($res[$row["ID"]])) {
        $res[$row["ID"]] = [$row];
    } else {
        $res[$row["ID"]][] = $row;
    }
}