试图在MySQL INNER JOIN中使用变量

时间:2014-02-13 19:48:21

标签: php mysql session

我是一个php和MySQL的新手。我所做的是创建一个带有<select>下拉列表的html表单。根据表单中的选择,它会更改$_SESSION[campaignID]变量。更改表单中的选择应该会更改页面上显示的内容。该页面包含一个论坛风格的帖子,允许用户填写textarea,然后将其提交到MySQL数据库中,形成一个名为“posts”的表。在同一页面上,我然后显示“posts”表的内容。

我所做的是在MySQL表的帖子中,我添加了一个campaignID行。然后在我的广告系列表中,我还有一个campaignID行。每次创建广告系列时,广告系列表格中的campaignID都会自动递增。然后,通过前面提到的下拉列表,我可以选择我想要的广告系列,然后它应该显示与我选择的广告系列具有相同广告系列ID的所有帖子。

当我选择各种选项时,我可以验证$_SESSION[campaignID]是否正在发生变化。因为当我这样做然后保存另一个帖子时,会采用会话变量campaignID并将其正确保存在posts表中。

现在我需要它做的是,当我更改下拉列表(然后更改$_SESSION[campaignID])时,我需要它来显示与所选广告系列共享相同campaignID的帖子。在尝试将变量放入INNER JOIN查询时,我无法显示它。我觉得我提供的信息可能还不够,但不确定我还需要包含哪些内容。帮助

包含INNER JOIN查询的代码,并显示各种帖子表行

已更新

    <?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);
?>

2 个答案:

答案 0 :(得分:1)

没有进入使用准备陈述咆哮...

您没有提取会话变量,而是将$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

答案 1 :(得分:0)

值应该是单引号 ' 所以你可以试试这个

posts.campaignID='" . $campaignID ."'"

代替

posts.campaignID=" . $campaignID