gpt4 book ai didi

php - MySql - 三个成功连接的表,但未能获得一列结果?

转载 作者:行者123 更新时间:2023-11-30 23:34:35 27 4
gpt4 key购买 nike

我将三个表(用户、帖子、评论)连接起来(为了我正在攻读学位的 ajax 支持的社交网络)。

到目前为止一切顺利,但是当我遍历它们时,我得到了除一个之外的所有结果。对帖子评论者的引用(存储在评论表中)仅作为数字 ID 出现(应该连接到用户表,但我的连接显然无法正常工作!)。

非常感谢任何帮助!可能是一些简单的事情,因为我对这个 PHP/mysql 游戏还是新手!

MySQL 表:

           CREATE TABLE `post` (
`pid` int(10) NOT NULL AUTO_INCREMENT,
`uid` int(10) NOT NULL,
`post` text NOT NULL,
`pid_imageurl` varchar(100) NOT NULL,
`likes` int(10) NOT NULL,
PRIMARY KEY (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5



CREATE TABLE `user` (
`uid` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`password` varchar(20) NOT NULL,
`uid_imageurl` varchar(100) NOT NULL,
`joindate` varchar(11) NOT NULL,
PRIMARY KEY (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;


CREATE TABLE `comments` (
`cid` int(10) NOT NULL AUTO_INCREMENT,
`comment_pid` int(10) NOT NULL,
`comment_uid` int(10) NOT NULL,
`comment` text NOT NULL,
PRIMARY KEY (`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

代码:

        $sql = "SELECT post.post, post.pid_imageurl, post.likes, user.name, comments.comment,   
user.uid_imageurl, comments.comment_uid

FROM post
INNER JOIN user
ON post.uid=user.uid
LEFT JOIN comments
ON comments.comment_pid=post.pid
AND user.uid=comments.comment_uid
";

$result = mysql_query($sql);



while($row=mysql_fetch_assoc($result)){?>
<ul>
<li>User Profile image here:<? echo $row['uid_imageurl']; ?></li>
<li>Post:<? echo $row['post']; ?></li>
<li>Post by:<? echo $row['name']; ?></li>
<li>Post images:<? echo $row['pid_imageurl']; ?></li>

<li>post has: <? echo $row['likes']; ?> likes.</li>
<li><? echo $row['comment']; ?></li>
<li>by: <? echo $row['comment_uid']; ?></li>
<!--This is only output as a stored id no rather than users name--!>




</ul>


<?}
?>

最佳答案

首先,您的查询应该是这样的:

SELECT 
p.post,
p.pid_imageurl,
p.likes,
u.name,
c.comment,
u.uid_imageurl,
cu.name as CommentName
FROM
post p
INNER JOIN user u ON
p.uid=u.uid
LEFT JOIN comments c ON
c.comment_pid=post.pid
left join user cu on
c.comment_uid = cu.uid

$row['comment_uid'] 应该变成 $row['CommentName']

您的原始查询只是抓取原始发布者发表的评论(您的加入条件)。您想再次加入 user 表以获取评论发布者而不是原始发布者。

关于php - MySql - 三个成功连接的表,但未能获得一列结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8661602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com