【发布时间】:2015-06-15 15:24:07
【问题描述】:
我正在为我的 php 项目开发一个简单的论坛。我有一个 viewpost.php 文件,它显示所有帖子并有一个阅读更多按钮。像这样。
<?php
foreach($rows as $output){
echo '<div id="dd">';
$uid = $output['uid'];
$result2 = $conn->prepare("SELECT username FROM users WHERE uid = '$uid'");
$result2->execute();
$rows2 = $result2->fetchAll();
foreach($rows2 as $username_row){
echo 'POST BY '.$username_row['username'].':';}
echo '<h3>Title:'.$output['title'].'</h4>';
?>
<form action="comments.php" method="post">
<input type="submit" value="Read more" name="">
</form>
<?php
echo '</div>';
}
?>
现在我想在 cmets.php 中加载 post 和 cmets。但我希望 post_id 从数据库中检索帖子、标题和 cmets。我想知道当用户单击 readmore 按钮时如何将 viewpost.php 中的 post_id 传递给 cmets.php。任何帮助对于新手来说都是非常明显的。
【问题讨论】:
-
<input type="hidden" name="post_id" value="$output[id]" />,基本上。看起来您正在循环中进行嵌套查询。您应该改写一个JOINed 查询。 -
@MarcB 感谢您提供如此出色的解决方案。您说加入时的真正意思是什么? .你是说先加入这两个表并检索列?
-
如果您在一个循环中运行两个查询,并且“内部”查询使用来自“外部”查询的数据,那么它们应该使用
JOIN重写为单个查询。那么你正在运行一个查询,而不是 1+n,这是非常低效的。