Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果表2具有表1的外键,并且我对表1进行查询,那么有没有办法从表2中获取数据_Php_Mysql - Fatal编程技术网

Php 如果表2具有表1的外键,并且我对表1进行查询,那么有没有办法从表2中获取数据

Php 如果表2具有表1的外键,并且我对表1进行查询,那么有没有办法从表2中获取数据,php,mysql,Php,Mysql,我有两个表,一个叫做users,还有一个叫做role_id的表,它使用外键从第二个叫做roles的表获取数据。所以role_id是role的一个id,但是我想得到这个值,它位于roles表中,并打印它而不是id。我甚至不知道怎么做。 因此,如果我们看一下代码: 我想回显角色的值,而不是角色id,但它位于另一个表中 $querytable = mysqli_query($con, "SELECT * from users WHERE role_id = '2' OR role_id = '1'")

我有两个表,一个叫做users,还有一个叫做role_id的表,它使用外键从第二个叫做roles的表获取数据。所以role_id是role的一个id,但是我想得到这个值,它位于roles表中,并打印它而不是id。我甚至不知道怎么做。 因此,如果我们看一下代码: 我想回显角色的值,而不是角色id,但它位于另一个表中

$querytable = mysqli_query($con, "SELECT * from users WHERE role_id = '2' OR role_id = '1'");
        while($row=$querytable->fetch_assoc()):?>
         <tr><td><?php echo $row['username'];?></td>
         <td><?php echo $row['fio'];?></td>
         <td><?php echo $row['password'];?></td>
         <td><?php echo $row['role_id'];?></td>
         <td><?php echo $row['salary_fix'];?></td>
         <td><?php echo $row['salary_percent'];?></td></tr>
        <?php endwhile;?>

可以使用JOIN从链接表中获取数据

就像这样:

SELECT * from users 
JOIN roles ON users.role_id = roles.id
WHERE role_id IN (1, 2) 
然后,您将获得每个用户的表角色中的值

查看文档以了解更多信息


听起来您想在查询中使用联接,能否提供有关表结构的更多详细信息

根据你所说的,我认为你在寻找类似的东西:

SELECT * FROM users INNER JOIN roles on users.role_id = roles.id WHERE role_id='1' OR role_id='2'

如果要获取角色值而不是角色id,则应使用左连接:

SELECT * FROM users LEFT JOIN roles ON users.roles_id = roles.value

试着更清楚地回答你的问题你到底想显示什么?也给我们展示所有这些相关表的模式现在你几乎没有答案了,试试吧