0

我是 PHP 新手,正在将社交网络作为实践,并将我所学的知识应用到“现实世界”中。无论如何,我在 MySQL 数据库中有两个表,我试图在我的网站上显示在通过 php echo 呈现的同一个 html 表中。

这是表格

(table1) note_system: -id, -username, -note

(表 2)注释:-id、-cid(等于 note_system 中的 id)、-username、-comment

所以有人发表帖子并将其保存到 note_system 表,然后有人对帖子发表评论并将其保存到带有 note_system 表中的 id 的评论表中,因此可以建立关系。

所以我想做的是让帖子评论与相关帖子一起显示。我已经收集到我可能需要一个 JOIN 或 UNION 来实现这一点,但我完全不知道如何做到这一点。一直在绞尽脑汁并进行大量谷歌搜索,但我并没有真正到达任何地方。我尝试的一切都会给我错误。注释显示得很好并且符合预期,但我一生都无法弄清楚如何让评论也显示在那里。

这是我的代码(不要嘲笑我的 PHP 的菜鸟,这是我的第二个 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>";








 ?>

我希望我的小鸡从头编程有意义。感谢您的时间和知识。

4

2 回答 2

0

如果您是使用 php 和 mysql 的初学者,以下是您的基本步骤。

首先:为数据库用户、密码、主机、数据库名设置配置

$conn = new mysqli('database_server','database_username','database_password','database_name');

第二:创建一个查询(您可以在此处插入您的查询)..

$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;

于 2013-04-02T05:11:07.747 回答
0

实际上,评论是与实际帖子不同的数据集,您可以使用第二个查询来获取与帖子相关的所有评论。但是表连接非常有用,您应该学习它们。在这种情况下,您将在共享 ID(外键)上加入 note_system 和 comments 表。

就像这样:

SELECT *
FROM note_system
LEFT JOIN comments ON comments.cid=note_system.id

这是表的文字连接,因此只要连接表达式匹配,您的输出将包括两个表中的所有列。如果注释表中没有匹配的 CID 列,则这些列的值在您的输出中将为 NULL。(如果您只想返回匹配的行,您可以使用 INNER 连接,而不是我上面使用的 LEFT OUTER 连接。)

这是一个解释 SQL 表连接的好页面。

于 2013-04-02T05:25:35.503 回答