从3个表中获取信息SQL& PHP

时间:2013-03-28 13:20:41

标签: php mysql join

我正在使用HTML,CSS,PHP和MySQl创建类似于系统的博客。 该网站由三个表组成。

用户( ID ,用户名,密码,电子邮件)
帖子( postid ,标题,帖子)
评论( postid id ,评论,commentid)postid来自帖子和来自用户的ID。

我正在尝试显示所有评论以及将其留给某个帖子的用户用户名。

当我在phpmyadmin中使用此查询时: SELECT user.username,comments.comment FROM user INNER JOIN对user.id = comments.id的评论,其中postid = 1

它显示了我需要的东西。

当我将它添加到php时,我会得到一个空白页面。

<?php
//echo "1";
session_start();

$connect = mysql_connect('localhost', 'root', 'root') or die("Couldn't connect");
mysql_select_db("com541blog") or die("Couldn't connect to database");

//echo "2";
//$postid = $_GET['type'];
$_SESSION['postid'] = $postid;

//echo "3";
$query_comments = mysql_query("SELECT user.username as username, comments.comment as comment     FROM user INNER JOIN comments on user.id=comments.id WHERE postid='1'");

$info = mysql_fetch_array($query_comments);

$username = $info['username'];
$comment = $info['comment'];

echo $username;                         
echo $comment;

?>

提前感谢您的帮助:)

3 个答案:

答案 0 :(得分:2)

您没有执行任何查询。

$rs = mysql_query($query_comments);
$info = mysql_fetch_array($rs);

答案 1 :(得分:1)

您需要在PHP中指定mysql_query ...否则您的查询将无法执行

喜欢:

$query_comments = mysql_query("SELECT user.username, comments.comment FROM user INNER JOIN comments on user.id=comments.id where where postid=1");

答案 2 :(得分:1)

你的第一行有一个我怀疑的错误,即在'connect'的末尾附近缺少'c'。

include("db_connet.php");应为include("db_connect.php");

此外,缺少分号;。这样:

$query_comments = ("SELECT user.username, comments.comment 
                    FROM user INNER JOIN comments on user.id=comments.id 
                    where postid=1")

应阅读:

$query_comments = ("SELECT user.username, comments.comment 
                    FROM user INNER JOIN comments on user.id=comments.id 
                    where postid=1");

另外,使用表名(例如user.username)对每个列名进行限定也不错。但您可能更喜欢使用表别名的以下更简洁的语法:

$query_comments = ("SELECT u.username, c.comment 
                    FROM user u INNER JOIN comments c on u.id = c.id 
                    where c.postid = 1");

(注意表别名不需要是单个字母,因此可以方便地将表名称(例如“ManufacturerSuppliedPartsListData_Feb01”)减少到例如“mpl”,而不会失去其意义。或者,例如,如果你有“客户”和“信用”而不仅仅是“c”,您可以使用例如“cust”和“cred”)