2014-03-27 36 views
1

這是我的查詢。這是連接表的正確方法嗎?

$getdata = $conn->prepare("SELECT * FROM posts, 
    INNER JOIN users ON posts.user_id = users.id 
    INNER JOIN address ON posts.user_id = address.user_id 
    INNER JOIN favorites ON posts.user_id = favorites.user_id 

    WHERE user_id = {$userid} ORDER BY post_id"); 

這是加入多個表的正確方法嗎?它似乎不適合我。

UPDATE

這裏是一個查詢的更新。

$sth = $dbh->prepare("SELECT users.*, avatars.*, posts.*, favorites.* FROM posts 
    INNER JOIN users ON posts.user_id = users.id 
    INNER JOIN avatars ON posts.user_id = avatars.user_id 
    INNER JOIN favorites ON posts.user_id = favorites.user_id 
    ORDER BY posts.post_id"); 

$sth->execute(); 

$rows = $sth->fetchAll(); 

if(count($rows) > 0) { 

    foreach($rows as $row) { 

     ?><h1><?php echo $row['post_id']; ?></h1><?php 
     ?><h1><?php echo $row['id']; ?></h1><?php 
     ?><h1><?php echo $row['avatar_thumb']; ?></h1><?php 
     ?><h1><?php echo $row['title']; ?></h1><?php 
     ?><h1><?php echo $row['username']; ?></h1><?php 

    } 
} 
?> 

另一個更新

一切正常。此問題已得到解決。感謝大家的幫助!對於將來加入表格問題的任何人,我想提一下檢查你的表格並確保它們不是空的;這就是爲什麼它對我顯示空白。

+0

user_id在where子句中不明確。 –

+0

逗號後的表帖'帖子,'不需要 –

回答

0

不,你需要提及從哪個表中選擇什麼,因爲你從多個表中選擇數據。

$getdata = $conn->prepare("SELECT posts.*, users.* FROM posts 
    INNER JOIN users ON (posts.user_id = users.id) 
    INNER JOIN address ON (posts.user_id = address.user_id) 
    INNER JOIN favorites ON (posts.user_id = favorites.user_id) 

    WHERE user_id = users.$userid ORDER BY posts.post_id "); 
+0

請參閱更新後的帖子。我在完整的查詢中完成了你的方法。主要的pdo錯誤顯示。出於某種原因,我不能加入一次以上。 – thatoneguy

+0

對不起,我的錯誤。不要使用逗號! – sunny

+0

是的,我刪除了逗號,現在頁面顯示空白。 – thatoneguy

0

似乎user_id會引起歧義,因爲所有的表都具有user_id共同field.So同時使用您的查詢需要提及從哪個表要檢查數據像

WHERE posts.user_id = {$userid} ORDER BY post_id 
2

有有幾個問題:

$getdata = $conn->prepare("SELECT * FROM posts 
    INNER JOIN users ON posts.user_id = users.id 
    INNER JOIN address ON posts.user_id = address.user_id 
    INNER JOIN favorites ON posts.user_id = favorites.user_id 
    WHERE users.id = {$userid} ORDER BY posts.id"); 

問題是:

  1. postsFROM條款之後的額外逗號。
  2. user_idwhere子句中不明確,您想使用其中一個連接表來引用列。
  3. post_idorder by子句中會變得模糊不清,您希望使用其中一個連接表來引用列。
+0

下面的用戶'sunny'顯示保留逗號,並且您說要刪除它。查看我的更新後的完整查詢。這給了我主要的Pdo錯誤。 – thatoneguy

+0

我刪除了逗號,現在頁面顯示空白。 – thatoneguy

相關問題