[英]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 查询中放置一个变量时,我只是无法让它显示出来。 我有一种感觉,我提供的信息可能不够,但不确定我还需要在这里包含什么。 帮助?
<?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.