2013-05-05 54 views
1

我一直在創造一個博客一個簡單的系統,但加入2個表之後,當檢索數據庫,像這樣的波紋管有一定的困難後:從數據庫沒有檢索行連接表

表名:文章

  • ID
  • CATEGORY_ID
  • 標題
  • 消息

表名稱:類

  • ID

什麼我想做的事:

  • 從上面的兩張桌子加入infomations。
  • 在我的管理面板中檢索它們以編輯/刪除文章。

什麼是我的問題: - 如果我用加入表:

$ SQL =「SELECT * FROM文章JOIN類別ON articles.category_id = categories.id

我可以得到所有的列,但似乎編輯和刪除按鈕正在識別類別id列,而不是文章ID列。

我使用的foreach以檢索數據庫,如簡歷波紋管:

<thead> 
    <tr> 
     <th class="category">category</th> 
     <th class="title">title</th> 
     <th class="message">content</th> 
     <th class="edit">edit</th> 
     <th class="del">del</th> 
    </tr> 
</thead> 

<?php foreach ($articles as $article): ?> 
<tbody> 
    <tr> 
     <td><?php echo h($article["name"]); ?></td> 
     <td><?php echo h($article["title"]); ?></td> 
     <td><?php echo h($article["message"]); ?></td> 
     <td><a href="article_edit.php?id=<?php echo h($article["id"]); ?>"><img src="images/icn_edit.png" title="Edit"></a></td> 
     <td><a href="article_delete.php?id=<?php echo h($article["id"]); ?>"><img src="images/icn_trash.png" title="Trash"></a></td> 
    </tr> 
</tbody> 
<?php endforeach; ?>  

如果我嘗試使用的編碼波紋管,以區分文章ID:

$ sql =「SELECT articles.id AS articleid,title,message,FROM articles JOIN categories ON articles.category_id = categories.id
$ stmt = $ pdo->查詢($ SQL);
$ articles = $ stmt-> fetchAll();

隨着波紋管指定的文章ID鏈接:

 <td><a href="article_edit.php?id=<?php echo h($article["articleid"]); ?>"><img src="images/icn_edit.png" title="Edit"></a></td> 
     <td><a href="article_delete.php?id=<?php echo h($article["articleid"]); ?>"><img src="images/icn_trash.png" title="Trash"></a></td> 

現在,編輯和刪除按鈕鏈接到正確的「的文章ID」,但不能得到categories.name列行了。

希望有人能幫助我解決這個問題,並會非常感激。

回答

2

我假設在這兩個類別和文章表中有一列id

你幾乎就在那裏,使用別名。

SELECT articles.id AS article_id, articles.name AS article_name, categories.id AS category_id, categories.name AS category_name 
FROM articles 
INNER JOIN categories ON areport.category_id = categories.id 

你應該避免選擇數據時使用*,只能選擇你的實際需要,使用上面的AS,這將重命名輸出數據的列。

+0

謝謝你太過分了,使用別名realy做了工作! – user2351553 2013-05-05 10:47:17

+0

@ user2351553如果我做了這項工作,你應該通過接受這個答案來表示感謝。 – 2013-05-05 11:15:18

0

查詢中您的表名是錯誤的。使用物品而不是港口

SELECT articles.id AS article_id, 
     articles.name AS article_name, 
     categories.id AS category_id, 
     categories.name AS category_name 
FROM articles 
INNER JOIN categories ON articles.category_id = categories.id 
+0

謝謝Prashant,使用別名並解決它! – user2351553 2013-05-05 10:46:26