显示表中的类别名称

时间:2013-11-05 22:04:59

标签: php mysql sql

我的数据库中有两个表。一个名字开玩笑,另一个名称分类。

笑话

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 ;

,我想知道查询是什么,以找到一个笑话的类别名称,所以它可以显示在主页上,如标题:“名人笑话”笑话:“麦莉赛勒斯是一个笑话”等等..

是否有人能够帮助我解决这个问题,我猜它将是一个分配给名为$ category_name的变量的查询/字符串,它将引用这两个表,但同样,我不太确定如何去做。

2 个答案:

答案 0 :(得分:0)

首先尝试连接两个表:

SELECT
* //You can filter more your columns here
FROM
jokes
LEFT JOIN category ON
jokes.category_id = category.category_id

现在,在此声明之后,您可以添加一个WHERE CLAUSE,它可能是这样的

WHERE category.category_name like '%Miley%'

表示您将检索名称为Miley

的类别的记录

答案 1 :(得分:0)

如果您要对所有笑话/类别进行此操作,它将如下所示:

SELECT * FROM jokes UNION SELECT * FROM category

但是如果你想做一个玩笑,你可以使用Drixson发布的答案。如果你想要一个类别中的所有笑话,你会这样做:

SELECT * FROM jokes WHERE category_id=CATEGORY_ID

您可以使用一些PHP来显示每个类别的笑话:

//Cat ID, using 1 for example
$category = 1

//Query
$query = "SELECT * FROM jokes WHERE category_ID=:cat";

//Establish PDO, prepare, apply parameter, execute, fetch data 
$search = new PDO("mysql:host=HOST;dbname=DB",USERNAME, PASSWORD);
$runQuery = $search->prepare($query);
$search->bindParam(':cat', $category, PDO::PARAM_INT);
$search->execute();
$results = $search->fetchAll();

//For every row display joke_id and the joke
foreach($results as $joke){
    echo $jokes["joke_id"] . " - " . $jokes["joke"];
}

//Kill   
$results = null;

希望它有所帮助。 PDO非常容易上手,所以如果您需要帮助,只需在Google上搜索PDO教程。