php-连接表的foreach循环

我正在尝试在循环内列出用户,但我想将city_name保留在循环外.我是否需要另一个查询或if语句?

结果我到底想要什么:

伦敦用户
鲍勃·詹姆斯

纽约用户
大卫

users table
====================
id  user_name   user_city_id  user_type
1   Helen       2             NA
2   James       1             PREMIUM
3   David       1             norMAL
4   Bob         1             norMAL

cities table
=============
city_id  city_name  city_status
1        London     1
2        New York   1
3        Paris      0

<?PHP 

    $getcities = $db->get_rows("
        SELECT * 
        FROM users
        JOIN cities 
        ON cities.city_id = users.user_city_id
        WHERE city_status = '1'
        AND user_type IN ('norMAL','PREMIUM')
    ");

?>

<h1><?PHP echo $row->city_name ?> USERS</h1>

<?PHP
    foreach($getcities as $row) {
?>

<h2><?PHP echo $row->user_name ?></h2>

<?PHP
    }
?>

解决方法:

您可以使用SQL查询来完成.

    SELECT cities.city_name, GROUP_CONCAT(users.user_name) AS names
    FROM users INNER JOIN cities ON cities.city_id = users.user_city_id
    WHERE city_status = '1' AND user_type IN ('norMAL','PREMIUM')
    GROUP BY cities.city_id

在你的PHP

    foreach($getcities as $row) {
          echo $row->city_name . ": " . $row->names;
    }

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...