繁体   English   中英

尝试在 MySQL INNER JOIN 中使用变量

[英]Trying to use variable in MySQL INNER JOIN

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

我所做的是在帖子 MySQL 表中,我添加了一个活动 ID 行。 然后在我的活动表中,我还有一个活动 ID 行。 每次创建活动时,活动表中的活动 ID 都会自动增加。 然后使用前面提到的下拉菜单,我可以选择我想要的活动,然后它应该显示与我选择的活动具有相同活动 ID 的所有帖子。

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

现在我需要它做的是,当我更改下拉列表(然后更改$_SESSION[campaignID] )时,我需要它显示与所选活动共享相同活动$_SESSION[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);
?>

没有进入使用准备的语句咆哮......

您不是在拉会话变量,而是将$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

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

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

代替

posts.campaignID=" . $campaignID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM