1
我有三個表(用戶,發佈,評論)加入(爲ajax動力社交網絡的事情,我正在做一個學位)。MySql - 三個成功連接的表,但未能獲得一列結果?
到目前爲止很好,但當我循環他們時,我得到除了一個之外的所有結果。誰評論了一篇文章(存儲在評論表中)的引用僅作爲數字標識(應該加入到用戶表中,但我的加入顯然不能正常工作!)。
非常感謝任何幫助!可能有些簡單,因爲我在這個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>
<?}
?>
嗨你的代碼看起來像一個很好的解決方案,但是cu.name與什麼關係?和帖子/評論c和用戶cu?我是mysql新手。 – ChrisSherwood 2011-12-29 10:01:51
p,c和cu是別名。它允許您稍後使用它們來識別列。通過這種方式,您可以兩次加入'user'表,而不會出現問題,因爲您將它們的別名區別開來。 – Eric 2011-12-29 13:50:49