我是一个php和MySQL新手。我所做的是创建一个带有<select>下拉列表的html表单。根据从表单中选择的内容,它将更改$_SESSION[campaignID]变量。更改表单中的选择将更改页面上显示的内容。该页面由一个论坛风格的帖子组成,允许用户填写一个文本区域,然后将其提交到MySQL数据库的一个名为“posts”的表中。在同一个页面上,我随后显示“posts”表的内容。
我所做的是在posts MySQL表中,添加了一个campaignID行。然后在我的campaigns表中还有一个campaignID行。每次创建活动时,活动表中的活动ID都会自动递增。然后使用前面提到的下拉列表,我可以选择我想要的活动,然后它应该显示与我选择的活动具有相同活动id的所有帖子。
我可以在选择各种选项时验证$_SESSION[campaignID]是否正在更改。因为当我这样做,然后保存另一篇文章时,它接受会话变量campaignID并将其正确保存在posts表中。
现在我需要它做的是,当我更改下拉列表(然后更改$_SESSION[campaignID])时,我需要它显示与所选活动共享相同活动ID的帖子。我只是在尝试将变量放入内部连接查询时无法显示它。我有一种感觉,我提供的信息可能不够,但不确定我还需要包括在这里。帮忙?
包含内部联接查询并显示posts表的各行的代码
更新

    <?php
$con=mysqli_connect("localhost","dorians","ds2953!b67P$","aldentec");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$campaignID = $_SESSION['campaignID'];


$result = mysqli_query($con,"SELECT posts.postDate, posts.postName, posts.postEntry FROM posts INNER JOIN campaigns ON posts.campaignID=" . $campaignID);

while($row = mysqli_fetch_array($result))
  {
  echo "<div id='campaignPostContainer'>";
  echo "<ul class='campaignPostBox'>";
  echo "<p class='postInfo'>";
  echo "Posted on:";
  echo "<li>" . $row['postDate'] . "</li>";
  echo "</p>";
  echo "<p class='postInfo'>";
  echo "Posted by:";
  echo "<li>" . $row['postName'] . "</li>";
  echo "</p>";
  echo "<li class='postEntry'>" . $row['postEntry'] . "</li>";
  echo "</ul>";
  echo "</div>";
  echo "<hr>";
  }


mysqli_close($con);
?>

最佳答案

而不是用准备好的陈述咆哮。。。
您不是在拉会话变量,而是将$campaignId按字面意思分配给字符串$_SESSION[campaignID]
更改行:

 $campaignID = '$_SESSION[campaignID]';

致:
 $campaignID = $_SESSION['campaignID'];

此外,除非在ON子句中定义如下内容,否则查询将生成一个交叉乘积:
SELECT posts.postDate, posts.postName, posts.postEntry FROM posts
   INNER JOIN campaigns ON posts.campaignID= $campaignID
         AND posts.campaignID= campaigns.id

09-07 21:38