php从一张或多张表中获取数据

标签 php mysql sql

我有 2 个表 A 和 B

Table A
       ID             NAME
       1              John
       2              Jack
       3              Mark

Table B
       ID             phone      UserID
       s1             4586         1
       s2             6996         1
       s3             9654         2

它们是一对多关系(约翰在表 2 上有 2 个电话)

我的sql查询

$sql = 'SELECT * 
                FROM 
                A 
                Join
                B
                ON
                B.USER_ID = A.ID
                WHERE 
                A.ID=:ID';

我的PHP

foreach($vars['GROUPS'] as $row) {


                <tr><th>Name</th><td><?=$row['Name']?></td></tr>
                <tr><th>phone</th><td><?=$row['phone']?></td></tr>


}

我想显示该用户 John name 的电话号码,然后显示表 2 中他的所有详细信息。因为它现在为我循环

最佳答案

您有 2 个选择:

  1. 使用group_concat() sql 中的函数将用户拥有的所有电话号码连接成一个字符串,并在 php 中使用与您现在使用的几乎相同的循环。

    选择 a.id, a.name, group_concat(b.phone) 作为电话 来自 a.id=b.user_id 上的内连接 b 按a.id、a.name分组

  2. 保持当前的 sql 查询不变,但更改显示表的 php 循环。在这种情况下,在循环查询返回的所有记录后,仅打印出带有所有相应电话号码的姓名。只需连接循环中的所有电话号码即可。

关于php从一张或多张表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40257684/

相关文章:

sql - 延迟写入 SQL Server

javascript - 如何动态增加侧边栏高度?

php - 如何在 MySQL 中的单个查询中使用 group by 检索多列计数值?

php - 如何使用PHP获取客户端的MAC地址?

java - 如何从jTable中删除数据库中的数据?

sql - 选择具有最大 JSON 键的对象

php 类常量可见性

mysql - MySQL 查询返回空集

PHP $row ['value' ] 在 div 值中

php - 检查 mysql 级别的 UNIQUE KEY 或在 php 中执行 if ?