2015-10-01 62 views
0

在许多提示后,我试着将它结合以下两个查询。我认为代码是自我解释的。结合两个查询与加入

表:

评论:ID(INT),用户名(VARCHAR),autorpost(文本),评论(文本), id_post(INT),时间(TIME)

帖子(TEXT), date(DATE),longitude(FLOAT),latitude(FLOAT),title(TEXT), text(TEXT),town(TEXT),time() TIME)

$hostname='localhost'; 
      $user='root'; 
      $password=''; 
      $useron = $_COOKIE['username']; 
        try { 
          $dbh = new PDO("mysql:host=$hostname;dbname=searchfood",$user,$password); 

          $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line 
          $sql = "SELECT id_post 
    FROM comments 
    WHERE username = '$useron' 
    ORDER BY id DESC"; // oder (longitude between $loo and $lo or latitude between $laa and $la) versuchen 
     if ($own = $dbh->query($sql)) {// need to add this line in your code 
      // then after fetchColumn 
     $ownco = $own->fetchAll(PDO::FETCH_COLUMN, 0);  
     }       
        } 
        catch(PDOException $e) 
        { 
          echo $e->getMessage(); 
        } 


        try { 
          $dbh = new PDO("mysql:host=$hostname;dbname=searchfood",$user,$password); 

          $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line 
          $sql = "SELECT id, autorid, autor, date, longitude, latitude, title, text, town, time 
FROM posts 
WHERE id in (" . implode(",",$ownco) . ") 
    ORDER BY id DESC"; // oder (longitude between $loo and $lo or latitude between $laa and $la) versuchen 
     if ($resco = $dbh->query($sql)) {// need to add this line in your code 
      // then after fetchColumn 
     $resultcom = $resco->fetchAll();   
     }       
        } 
        catch(PDOException $e) 
        { 
          echo $e->getMessage(); 
        }  

我自己尝试:

"SELECT posts.id, posts.autorid, posts.autor, posts.date, posts.longitude, posts.latitude, posts.title, posts.text, posts.town, posts.time, comments.id_post 
FROM posts 
INNER JOIN 
comments 
WHERE id = post_id 
ORDER BY id DESC" 
+0

价值? –

+0

你没有忘记'ON table.column = table2.column2'吗? [Mysql JOIN](https://dev.mysql.com/doc/refman/5.0/en/join.html) – Epodax

回答

2

尝试此查询的$ ownco

"SELECT p.*, c.id_post 
FROM posts p 
JOIN comments c ON(c.id_post = p.id) 
ORDER BY p.id DESC" 
+0

我只想要一个查询,并且不存在'$ ownco'。 :) – klamertd

+1

现在检查查询。我已经删除了$ ownco部分 –

+0

现在该数组有任何帖子行翻倍。对于每个有'id_post'与'id'相同的评论,在我的foreach循环中创建一个新的列表项,尽管注释属于帖子。 :) – klamertd