Php 来自MySql的数据多次显示
这是我的sql查询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 = "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。