[英]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.