Php 来自MySql的数据多次显示

Php 来自MySql的数据多次显示,php,mysql,forms,Php,Mysql,Forms,这是我的sql查询 $sql = "SELECT comments.comment, users.userid, comments.bpid FROM comments, users ,blogpages WHERE comments.user_id = users.user and comments.bpid ='".$blogid."' ORDER BY comments.cid;" $query = mysqli_query($con,$sql

这是我的sql查询

$sql = "SELECT comments.comment, users.userid, comments.bpid 
       FROM comments, users ,blogpages
       WHERE comments.user_id = users.user and comments.bpid ='".$blogid."'
       ORDER BY comments.cid;"

$query = mysqli_query($con,$sql) or die (mysqli_error($con));

while($row = mysqli_fetch_array($query,MYSQLI_ASSOC)){
        $comm =$row["comment"]; 
        $commentsuser =$row["userid"];
        $commentbody .= "".$commentsuser."".$comm." ";      
}
这是我的表格和展示

<form action="" method="POST">
    <textarea  name="commentarea"></textarea>
    <input type="submit" value="COMMENT" >
    <h2><?php echo $commentbody; ?></h2>
</form>
但在我输入注释后,每个值都会显示多次


在我重新进入页面之前,注释不会显示。您缺少一个连接条件:

SELECT   comments.comment, users.userid, comments.bpid 
FROM     comments, users ,blogpages
WHERE    comments.user_id = users.user AND
         comments.bpid = blogpages.id AND -- Missing in the OP
         comments.bpid ='".$blogid."'
ORDER BY comments.cid;
话虽如此,隐式连接已被弃用,您可能应该使用显式连接:

SELECT   comments.comment, users.userid, comments.bpid 
FROM     comments
JOIN     users ON comments.user_id = users.user
JOIN     blogpages ON comments.bpid = blogpages.id 
WHERE    comments.bpid ='".$blogid."'
ORDER BY comments.cid;

这也将有助于可视化您缺少的连接条件,因为在这种形式中,它是语法的一个实际部分。

我认为您正在寻找的sql类似于

SELECT 
    comments.comment, 
    users.userid, 
    comments.bpid
FROM 
    comments, 
    INNER JOIN users ON comments.userId = users.userid,
    INNER JOIN blogpages ON comments.bpid = blogpages.bpid
WHERE
    comments.bpid ='".$blogid."'
ORDER BY 
    comments.cid;

为什么要在sql字符串的每一行末尾写一个\n?该字符串应该是sql命令,而不是要在某处显示的字符串。您有3个表,并且只有其中一个表的联接条件,这意味着其他表将是交叉联接。请在phpMyAdmin中运行该查询,或者在允许您测试查询的工具中运行该查询。然后查看结果。另外,其中comments.user\u id=users.user。你是说users.userid吗?是的,userid列名是userpages。请用适当的列名替换blogpages.bpid和users.userid。