我正在构建一个博客并查看我使用的每个帖子:
post.php?id=<?php echo $row_post['id']; ?>
Post是我的数据库中的一个表。
$colname_post = "-1";
if (isset($_GET['postid'])) {
$colname_post = $_GET['postid'];
}
mysql_select_db($database_connect, $connect);
$query_post = sprintf("SELECT postid, title, DATE_FORMAT(date,'%%d.%%m.%%Y') AS date, idcategory, text FROM post WHERE postid = %s", GetSQLValueString($colname_post, "int"));;
$post = mysql_query($query_post, $connect) or die(mysql_error());
$row_post = mysql_fetch_assoc($post);
$totalRows_post = mysql_num_rows($post);
我在显示不在post表中的数据时遇到问题。例如,在标题下,我想显示类别。类别是一个单独的表。它们之间的关系是一个类别可以连接到许多帖子,但是一个帖子只能有一个类别。它们与categoryID(外键)连接。如果您需要查看show create table
,请注释。
因此,虽然正确显示了post表中的所有数据,但其他表中的数据(即不包含postid作为attrubute的表)则不是。例如
<h1><?php echo $row_post['title']; ?></h1> <-- correct value displayed
<p><?php echo $row_category['name']; ?></p> <-- not correct
有关如何解决此问题的任何建议吗?
答案 0 :(得分:2)
您需要加入
select p.title, c.name from post p
inner join category c on c.categoryID = p.categoryID
您可以根据需要在select语句中添加更多列。
更新
这是您的查询应该是这样的
SELECT
p.postid,
c.name,
p.title,
DATE_FORMAT(p.date,'%%d.%%m.%%Y') AS date,
p.idcategory,
p.text
FROM post p
inner join category c on c.categoryID = p.idcategory
WHERE p.postid = %s
我为表名p和c创建了帖子和类别的别名,因此请检查此查询 如果选择是从适当的表格完成的。
答案 1 :(得分:0)
您可以使用JOIN子句在SQL中处理多个表。
有关此内容的详情,请访问:http://dev.mysql.com/doc/refman/5.0/en/join.html