从多个表PHP/Mysql中选择数据

从多个表PHP/Mysql中选择数据,php,mysql,Php,Mysql,我正在尝试从多个表中获取数据以构建通知提要 我有3个表:用户、用户通知和用户评论 当我点击图标查看通知时,我只想以下拉列表的形式显示新的通知,因此在用户通知表中,我有行“状态”,id\u from和id\u所有者,它们可以是“新的”或“旧的”,这样我知道要检索什么,但当我需要从这些通知中获取关于它是谁的信息并能够显示例如,个人资料图片、用户名、注释id等时,我的问题就出现了 这是我正在尝试获取的HTML: while ($row_notification = $result_load_notif

我正在尝试从多个表中获取数据以构建通知提要

我有3个表:用户用户通知用户评论

当我点击图标查看通知时,我只想以下拉列表的形式显示新的通知,因此在用户通知表中,我有行“状态”id\u fromid\u所有者,它们可以是“新的”“旧的”,这样我知道要检索什么,但当我需要从这些通知中获取关于它是谁的信息并能够显示例如,个人资料图片、用户名、注释id等时,我的问题就出现了

这是我正在尝试获取的HTML:

while ($row_notification = $result_load_notifications->fetch_assoc()) {

            echo '<li class="dropdown-item">
                    <img src="'.$row_notification["avatar"].'" class="avatar-feed" alt="'.$row_notification["name"].'" /><p><strong>'.$row_notification["name"].'</strong> new <a href="https://sample.com/user/'.$_SESSION['alias'].'/#comment-'.$row_notification["id_comment"].'">comment</a> notification.<br>
                    <time class="date-post" datetime="'.$row_notification["date"].'"></time></p>
                    </li>';
            echo '<li class="dropdown-divider"></li>';

        }
在PHP中:

$load_notifications = mysqli_query($conn, "SELECT * user_notification n, users u, user_comments c WHERE n.status='new' AND n.id_owner=$session_id AND u.id_user=n.id_from AND c.id_owner=n.id_owner");
那代码就是不起作用,我做错什么了吗?(我不是专家)我是否缺少表之间的关系

任何提示都将不胜感激,
谢谢。

我终于可以解决我的问题了,一步一步地检索数据以了解这是如何工作的,并最终得到了这段代码(不确定这是否是一个好的实践,但它起了作用):


SELECT*FROM user\u notification n,…。
您的SQL无效,您没有指定
FROM
子句。此外,您的代码容易受到SQL注入的攻击:永远不要使用字符串串联或字符串插值来生成SQL!始终使用参数化查询!那它怎么不工作了?您对SQL注入非常开放。因为您使用的是mysqli,所以利用and。另外,在生产代码中使用
SELECT*
是一个坏主意。您应该始终显式命名要检索的列。感谢您的评论,我编辑了SQL以添加发件人,这是我的错误,抱歉。我实际上是在使用预先准备好的语句,只是为了快速书写而这样做@艾恩伯
$load_notifications = mysqli_query($conn, "SELECT * user_notification n, users u, user_comments c WHERE n.status='new' AND n.id_owner=$session_id AND u.id_user=n.id_from AND c.id_owner=n.id_owner");
SELECT 
u.name, u.avatar, c.id_comment, c.date 
FROM user_notification n, users u, user_comments c 
WHERE n.id_owner = ? 
AND n.notification_status = ? 
AND u.id_user = n.id_from 
AND c.id_user= n.id_from 
AND c.id_owner = n.id_owner