使用 php 和 sql 显示内部连接的结果

Posted

技术标签:

【中文标题】使用 php 和 sql 显示内部连接的结果【英文标题】:Display results from inner join with php and sql 【发布时间】:2018-03-03 17:53:26 【问题描述】:

我有以下带有列名的表格:

rides: id, creator, title, datetime, city, state, details
states: id, state, image
user: id, username, name, password, email, city, state

我有以下 php/sql 代码使用内部连接从表中获取信息:

$sql = "select * from ((rides inner join states on rides.state = states.id) inner join user on rides.creator = user.id) where rides.id=" . $ride;
$result = mysqli_query($dbcon, $sql);
$row = mysqli_fetch_assoc($result);

我遇到的问题是我想显示状态表中的状态字段、用户表中的用户名字段以及游乐设施中的所有其他信息,但我不确定如何执行此操作。我尝试了以下方法来显示状态,但它不起作用:

echo $row['state']; //this displays the state field from the rides table
echo $row['states.state']; //this displays nothing

我的想法是,因为不同的表具有相同的列名,它会从第一个(游乐设施)表中获取信息。它是否正确?如果是这样,有没有办法让它引用不同的表,或者我是否需要重命名列以便它们具有不同的名称?

感谢任何帮助。

【问题讨论】:

【参考方案1】:

选择你想要的字段:

select rides.*, states.state, user.username
. . .

现在,连接不需要括号。表别名使查询更易于编写和阅读。最后,你应该学会使用参数。因此,查询应如下所示:

select r.*, s.state, u.username
from rides r inner join
     states s
     on r.state = s.id inner join
     user u
     on r.creator = u.id
where r.id = ?

? 是参数的占位符。

【讨论】:

以上是关于使用 php 和 sql 显示内部连接的结果的主要内容,如果未能解决你的问题,请参考以下文章

SQL 从带有子查询的多个表中选择数据(包括来自内部连接的数据)错误:1242

SQL'WHERE'与'ON'(内部连接)[重复]

SQL Count 使用来自连接的信息

使用 Count() 和窗口函数的 sql 内部连接

运行多个线程时 SQL 事务发生内部连接致命错误

SQL_连接(Join),内部连接(INNER JOIN),左连接(LEFT JOIN ),右连接(RIGHT JOIN)完整外部连接(FULL OUTER JOIN),自连接(Self JOIN)(