我是一个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