0

我正在使用 HTML、CSS、PHP 和 MySQl 制作一个类似系统的博客。该站点由三个表组成。

用户(id,用户名,密码,电子邮件)
帖子(postid,title,post)
评论(postidid,comment,commentid)来自帖子的postid和来自用户的id。

我正在尝试显示为某个帖子留下的所有评论和用户名。

当我在 phpmyadmin 中使用此查询时:SELECT user.username, comments.comment FROM user INNER JOIN comments on user.id=comments.id where 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;

?>

在此先感谢您的帮助 :)

4

3 回答 3

2

您没有执行任何查询。

$rs = mysql_query($query_comments);
$info = mysql_fetch_array($rs);
于 2013-03-28T13:50:12.187 回答
1

您需要mysql_query在 PHP 中指定...否则您的查询将不会被执行

像 :

$query_comments = mysql_query("SELECT user.username, comments.comment FROM user INNER JOIN comments on user.id=comments.id where where postid=1");
于 2013-03-28T13:23:09.037 回答
1

我怀疑您的第一行有一个错误,即在“连接”末尾缺少“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”,而不会失去其含义。或者例如,如果您有“客户”和“Credit” 而不是“c”,您可以使用例如“cust”和“cred”)

于 2013-03-28T13:26:11.947 回答