我是PHP的新手,正在将社交网络作为实践,并将我在“现实世界”中学到的东西应用。无论如何,我在MySQL数据库中有两个表,我试图在我的网站上显示在通过php echo呈现的同一个html表中。
这是表格
(表1) note_system: -ID, -用户名, - 注意
(表2) 评论: -ID, -cid(等于note_system中的id), -用户名, -comment
所以有人发帖并将其保存到note_system表,然后有人对帖子发表评论并使用note_system表中的id保存到评论表中,以便建立关系。
所以我要做的是将帖子评论与相关帖子一起显示。我已经收集到,我需要一个JOIN或UNION才能实现这一目标,但我完全不知道如何去做。一直在绞尽脑汁,做大量的谷歌搜索,但我并没有真正得到任何结果。我尝试的一切都给了我错误。 Notes显示正常并且符合预期,但我不能为我的生活找出如何让评论显示在那里。
这是我的代码(不要嘲笑我的PHP的noob-ness,这是我的第二个PHP程序,我显然有很多要学习,我想在某些时候清理它但是现在我只是希望它具有功能性)
<?php
// Display Note_Wire
$con=mysqli_connect($host,$username,$password,$dbname);
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//format and display the Note_Wire results with comments
$result = mysqli_query($con,"SELECT * FROM note_system");
while($row = mysqli_fetch_array($result))
{
echo "<center>";
echo "<table class='note_wire'>";
echo "<tr>";
echo "<td>" . $row['username'] . "</td>" ;
echo "</tr><tr>";
echo "<td><a href=''>vote up</a>" . " " . $row['rank'] . " " . "<a href=''>vote down</a></td>" ;
echo "</tr><tr>";
echo "<td> <a href='{$row['link']}' target='blank'>{$row['link']}</a>";
echo "</tr><tr>";
echo "<td>" . $row['note'] . "</td>" ;
echo "</tr> ";
//add comments attempt this is where I would like the comments to be displayed
echo '
<td><form action="add_comment.php" method="POST">
<input type="hidden" name="username" value="';
echo htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');
echo '" />';
echo '<input type="hidden" name="cid" value="';
echo $row['id'];
echo '" />';
echo '<textarea name="comment">comment...</textarea></td></tr>
<tr><td><input type="submit" value="comment" />
</form></td></tr>
';
echo "</table>";
// break before next note-wire record renders
echo "<br />";
}
echo "</center>";
?>
我希望我的鸡毛刮刮编程有意义。感谢您的时间和知识。
答案 0 :(得分:0)
如果您的初学者使用php和mysql,那么下面是基础步骤。
首先:为数据库用户,PASS,HOST,DBNAME设置配置
$conn = new mysqli('database_server','database_username','database_password','database_name');
SECOND:创建查询(您可以在此处插入查询)..
$result= $conn->query("SELECT SUM(Total_Steps) AS value_sum FROM users");
最终:使用MYSQL函数显示记录...
while($row = $result->fetch_assoc()){
echo $row['dabatase_columnname'];
echo $row['database_columnname'];
}
为您的查询尝试使用此一个或创建一个相对的。
SELECT 'enter column needed here with their specific database allias ex. TABLE1.ID'FROM NOTE_SYSTEM TABLE1 LEFT JOIN COMMENTS TABLE2 ON TABLE1.ID = TABLE2.CID;
答案 1 :(得分:0)
实际上评论是与实际帖子不同的数据集,您可以使用第二个查询来获取与帖子相关的所有评论。但是表联接非常有用,你应该学习它们。在这种情况下,您将在共享ID(外键)上加入note_system和comments表。
如此:
SELECT *
FROM note_system
LEFT JOIN comments ON comments.cid=note_system.id
这是表的字面连接,因此只要匹配表达式,您的输出就会包含两个表中的所有columsn。如果comments表中没有匹配的CID列,则输出中这些列的值将为NULL。 (如果你只想返回匹配的行,你可以使用INNER连接,而不是我上面使用的LEFT OUTER连接。)