Php 从3个表中选择并在divs中回显结果

Php 从3个表中选择并在divs中回显结果,php,mysql,Php,Mysql,我的情况是这样的:我有三个表:用户表、搜索查询表和注释表 我想显示从这三个查询中得到的变量 我对用户查询和搜索查询都使用了内部联接。这个很好用 但是如何从第三个表中获取变量呢 下面是到目前为止我的代码 <?php $sql24 = "SELECT * FROM comments WHERE search_id=$search_id"; $result24=mysql_query($sql24); $sql = "SELECT * FROM user INNER JOIN search_q

我的情况是这样的:我有三个表:用户表、搜索查询表和注释表

我想显示从这三个查询中得到的变量

我对用户查询和搜索查询都使用了内部联接。这个很好用

但是如何从第三个表中获取变量呢

下面是到目前为止我的代码

<?php
$sql24 = "SELECT * FROM comments WHERE search_id=$search_id";
$result24=mysql_query($sql24);

$sql = "SELECT * FROM user INNER JOIN search_queries ON user.id = search_queries.id 
             ORDER BY search_id DESC";
$result=mysql_query($sql);

//-create  while loop and loop through result set
while($row=mysql_fetch_array($result))
{
    $fname =$row['fname'];
    $sname=$row['sname'];
    $id=$row['id'];
    $email=$row['email'];
    $profile_pic=$row['profile_pic'];
    $city=$row['city'];
    $country=$row['country'];
    $search_date=$row['search_date'];
    $QUERY=$row['QUERY'];
    $search_id=$row['QUERY'];

    //-display the result of the array
    echo "the results from 2nd query "; 
    echo "the results from the 3rd query "; 
}
?>

基础表中的字段:

  • 用户:id、电子邮件、fname、sname、通行证、城市、个人资料等
  • 注释:com_id、id、注释、日期等
  • 搜索查询:搜索id、id、查询、日期等
相反,第一个select查询似乎不起作用


请帮忙

假设
id
comments
search\u查询中
表格为
user
id

    $query = mysql_query("select * 
                            from user a, comments b, search_queries c
                            where a.id = b.id and a.id=c.id 
                            and c.search_id = '$search_id'");
    echo '<pre>';
    while($row=mysql_fetch_array($query)){
         print_r($row);
    }
    exit;
$query=mysql\u查询(“选择*
来自用户a、评论b、搜索查询c
其中a.id=b.id和a.id=c.id
和c.search_id=“$search_id”);
回声';
while($row=mysql\u fetch\u array($query)){
打印(行);
}
出口

试着使用mysqli或PDO,因为mysql已经被弃用了

好的,现在我们有了3个表的所有必要信息。总而言之:

  • 您希望列出所有帖子(搜索查询表),以及所有评论-如果帖子有评论或没有评论,则与此无关。您还希望显示帖子和评论的用户详细信息
  • 所有3个表中的id字段标识用户
  • comments表中有一个search_id外键,用于标识评论所属的帖子
sql查询如下所示:

选择u1.id作为poster\u id,--帖子的用户id
u1…-无论您希望包含关于创建帖子的用户的任何其他字段,请为每个字段别名
u2.id作为注释者_id,--注释的用户id
u2…-无论您希望包含关于创建注释的用户的任何其他字段,请将它们分别命名为别名
s、 搜索id,--post的id
s、 …,--您希望在文章中包含的任何其他字段
c、 com_id,--注释的id
c、 …,--您希望在评论中包含的任何其他字段
从搜索查询
左连接注释s.search\u id=c.search\u id——左连接确保列出所有帖子,而不仅仅是有注释的帖子
s.id=u1.id上的内部联接用户u1——联接到用户表以获取海报的用户详细信息
left join user u2 on c.id=u2.id--join获取评论者的用户详细信息,注意我再次使用了left join
如果您只想获取单个帖子的详细信息,那么在where条件中提供搜索id


我会让你自己去弄清楚php代码。但是,请注意,您不应再使用mysql_*()函数,而应使用mysqli或pdo。

您可以提供表结构。我认为您可以连接所有三个表,而不是当前方法。您执行第一个sql查询,但随后不处理结果。此外,在执行查询后,您的代码会为$search\u id赋值,此外,代码中没有错误处理,因此您甚至无法查看查询是否失败以及为什么失败。user(id、email、fname、sname、pass、city、profile\u pic等)。。。注释(com_id、id、注释、日期等)。。。。。search\u查询(search\u id、id、QUERY、date等)。@narasimharaosp,我刚刚提供。当我用一个内部连接将这三个连接连接起来时,现在发表评论的用户的id是错误的$sql=“SELECT*FROM user INNER JOIN search\u queries ON user.id=search\u queries.id INNER JOIN search\u comments ON search\u queries.search\u id=comments.search\u id”;而且我只收到有评论的帖子。谢谢。我在这里添加了一个“')search\u id”"); 但效果并不理想。没有打印任何数据。您的回答只是猜测,我们不知道这些表是如何连接的,也不知道OP想要查询什么。让我试着澄清一下:我想显示所有帖子/查询,无论它们是否有评论。这是不够的。comments表只有一个外键,一个名为id的字段,我们不知道它引用了哪个表(users或posts)。另一个表的外键仍然丢失。它引用用户表(它是评论用户的id)。非常感谢。最后我有了:$query=mysql\u query(“选择u1.id,u1.fname,u1.sname,u2.id,u2.fname,u2.sname,s.search\u id,s.query,s.search\u date,c.com\u id,c.comment,c.date from user search\u querys.id上的内部加入用户u1=u1.id左加入用户u2 on c.id=u2.id”);while($row=mysql\u fetch\u array($query)){但它完全不返回任何内容1.在调用sql语句时始终使用错误处理。您没有这样做,因此您不知道您有语法错误。2.虽然我为sql查询提供了一个复制粘贴结构,但您遗漏了部分内容。请将我提供的解决方案与您的代码进行比较。3.首先在您的计算机中设计并运行查询r我最喜欢的mysql管理应用程序,查看查询的作用。当您满意时,将其加入到代码中。这件事变得越来越复杂。即使我使用错误处理,也不会出现任何问题。我使用sql查询并直接粘贴到PHPMYADMIN和同一问题上。没有显示错误,也没有结果。这是我发布的代码这里:选择u1.id作为poster_id,u1.fname,u2.id作为commenter_id,u2.fname,s.search_id,s.QUERY,c.com_id,c.comment from user search_querys s s left join comments c on s.search_id=c.search_id internal join user u1 on s s.id=u1.id left join user u2 on c.id=u2.id…这里声明#1064-错误。这是一个不同于您的查询以前发布。如果此项未返回数据,则表示您的数据不一致或不正确