1

我一直在为博客创建一个简单的系统,但是在加入 2 个表后检索数据库时遇到了一些困难,如下所示:

表名:文章

  • ID
  • 类别ID
  • 标题
  • 信息

表名:类别

  • ID
  • 姓名

我想做什么:

  • 加入上面 2 个表格中的信息。
  • 在我的管理面板中检索它们以编辑/删除文章。

我的问题是什么: - 如果我使用以下方法加入表格:

$sql = "SELECT * FROM 文章在文章中加入类别。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 = "SELECTarticles.id AS articleid, title, message, FROM items JOIN categories ON items.category_id = categories.id
$stmt = $pdo->query($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 列行。

希望有人可以帮助我解决这个问题,并将非常感激。

4

2 回答 2

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如上所示使用会重命名输出数据中的列。

于 2013-05-05T10:26:24.297 回答
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
于 2013-05-05T10:30:00.503 回答