我是一个php和MySQL的新手。我所做的是创建一个带有<select>
下拉列表的html表单。根据表单中的选择,它会更改$_SESSION[campaignID]
变量。更改表单中的选择应该会更改页面上显示的内容。该页面包含一个论坛风格的帖子,允许用户填写textarea,然后将其提交到MySQL数据库中,形成一个名为“posts”的表。在同一页面上,我然后显示“posts”表的内容。
我所做的是在MySQL表的帖子中,我添加了一个campaignID行。然后在我的广告系列表中,我还有一个campaignID行。每次创建广告系列时,广告系列表格中的campaignID都会自动递增。然后,通过前面提到的下拉列表,我可以选择我想要的广告系列,然后它应该显示与我选择的广告系列具有相同广告系列ID的所有帖子。
当我选择各种选项时,我可以验证$_SESSION[campaignID]
是否正在发生变化。因为当我这样做然后保存另一个帖子时,会采用会话变量campaignID并将其正确保存在posts表中。
现在我需要它做的是,当我更改下拉列表(然后更改$_SESSION[campaignID]
)时,我需要它来显示与所选广告系列共享相同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);
?>
答案 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