我的数据库中有两个表。一个名字开玩笑,另一个名称分类。
笑话
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的变量的查询/字符串,它将引用这两个表,但同样,我不太确定如何去做。
答案 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教程。