Php 从数据库检索类别名称

Php 从数据库检索类别名称,php,mysql,Php,Mysql,我的数据库中有两个表。一个名为笑话,另一个名为类别 笑话 CREATE TABLE `jokes` ( `joke_id` int(11) NOT NULL AUTO_INCREMENT, `joke` varchar(1024) NOT NULL, `category_id` int(11) NOT NULL, PRIMARY KEY (`joke_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

我的数据库中有两个表。一个名为
笑话
,另一个名为
类别

笑话

CREATE TABLE `jokes` (
  `joke_id` int(11) NOT NULL AUTO_INCREMENT,
  `joke` varchar(1024) NOT NULL,
  `category_id` int(11) NOT NULL,
  PRIMARY KEY (`joke_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
类别

CREATE TABLE `category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(51) NOT NULL,
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
我的PHP在表格中显示笑话

<?php
include 'database.php';
$pdo = Database::connect();
$sql = 'SELECT * FROM jokes ORDER BY joke_id DESC';
foreach ($pdo->query($sql) as $row) {
    echo '';
    echo '<table class="table">';
    echo '<thead>';
    echo '<tr>';
    echo '<h3><th>Category Name</th></h3>';
    echo '<h3><th>Action</th></h3>';
    echo '<tbody>';
    echo '<tr>';
    echo '<thead>';
    echo '<tbody>';
    echo '<tr>';
    echo '<td >' . $row['joke'] . '</td>';
    echo '<td width=250>';
    echo '<a class="btn-big white" href="read.php?id=' . $row['joke_id'] . '">Read</a>';
    echo '&nbsp;';
    echo '<a class="btn-big green" href="update.php?id=' . $row['joke_id'] . '">Update</a>';
    echo '&nbsp;';
    echo '<a class="btn-big red" href="delete.php?id=' . $row['joke_id'] . '">Delete</a>';
    echo '</td>';
    echo '</tr>';

}
Database::disconnect();
?>

我的问题是如何让笑话的
category_name
显示在echo
“category name”中使用PHP?因为此时,表格只显示一个笑话,没有笑话的类别名称。例如:名人笑话:这是一个名人笑话。

使用此查询:

$sql = 'SELECT j.*, c.name 
        FROM jokes j 
         LEFT JOIN category c ON c.category_id = j.category_id 
         ORDER BY joke_id DESC';
要回显类别名称,请使用:
$row['name']

使用以下查询:

$sql = 'SELECT j.*, c.name 
        FROM jokes j 
         LEFT JOIN category c ON c.category_id = j.category_id 
         ORDER BY joke_id DESC';

要回显类别名称,请使用:
$row['name']

您应该更改查询以包含类别名称

SELECT j.joke AS joke, j.joke_id AS joke_id, c.name AS category 
FROM jokes j, category c 
WHERE j.category_id = c.category_id

之后,您可以通过调用
$row['category']

来获取类别。您应该更改查询以包含类别名称

SELECT j.joke AS joke, j.joke_id AS joke_id, c.name AS category 
FROM jokes j, category c 
WHERE j.category_id = c.category_id

之后,您可以通过调用
$row['category']

来获取类别。我将如何进行特定类别,例如仅仅是一个关于名人笑话的页面?@DrJan Itor在where子句
中传递类别id。我将如何进行特定类别,比如仅仅是一个关于名人笑话的页面?@DrJan Itor在where子句
where category\u id='2'
中传递category id。嘿,你不能不请我们看名人笑话就走开;-)好了,好了,我们开始吧。听到凯蒂·普莱斯再次怀孕的消息后,弗兰基·博伊尔向她发送了一封感谢信,并开始计划一次新的巡演。@andewjones在我的分类表中只选择一个分类的查询是什么?您必须添加第二个WHERE条件。如果你在上面的查询中附加
和c.name=
,你将得到你想要的结果。嘿,你不能不给我们讲一个名人笑话就走开;-)好了,好了,我们开始吧。听到凯蒂·普莱斯再次怀孕的消息后,弗兰基·博伊尔向她发送了一封感谢信,并开始计划一次新的巡演。@andewjones在我的分类表中只选择一个分类的查询是什么?您必须添加第二个WHERE条件。如果将
和c.name=
附加到上述查询中,您将得到所需的结果。