0

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

笑话

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 的变量,它将引用这两个表,但同样,我不太确定如何去做。

4

2 回答 2

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 的类别的记录

于 2013-11-05T22:09:53.660 回答
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 教程即可。

于 2013-11-05T22:14:03.723 回答