[英]Compare 2 mysql column values from different tables
我有 2 張桌子:
帳戶
車道
Lanes包含 1 列“ boss_id ”,它是 1 到 12 之間的 INT
帳戶包含各種列,包括用戶名、密碼和boss_id列
我正在嘗試使用 PHP 來顯示車道表中的所有項目,這很好用! 但是,我需要做的是顯示來自“帳戶”的用戶是否也共享或具有相同的boss_id並顯示不同的輸出:
常規輸出(無匹配賬戶)
foreach ($boss_id as $boss) {
echo "Lane " . $boss . "<br>;
}
如果有匹配的帳戶,請顯示此信息
echo "Lane booked by " . $username. "<br>;
我花了很多時間在這上面,真的需要一些幫助,因為我似乎無法弄清楚。
任何幫助都是極好的! 如果您需要更多信息,請詢問!
提前致謝
這是我到目前為止所擁有的(變量名稱可能不同,但您應該明白!)
$db_host = "localhost";
$db_username = "root";
$db_password = "";
//connect to mysqli database (Host/Username/Password)
$connection = mysqli_connect($db_host, $db_username, $db_password) or die("Error " . mysqli_error());
//select MySQLi dabatase table
$db = mysqli_select_db($connection, "archery-booking") or die("Error " . mysqli_error());
// get ALL lanes from database table "lanes"
$sql = mysqli_query($connection, "SELECT * FROM lanes");
while($row = mysqli_fetch_array($sql)) {
$bossid[] = $row['bossid'];
}
// save each result as a variable
foreach ($bossid as $compare) {
$compare = $compare;
}
// get ALL BOOKED lanes from database table "accounts"
$sqluser = mysqli_query($connection, "SELECT * FROM accounts WHERE boss_id = '".$compare."' ");
while($row = mysqli_fetch_array($sqluser)) {
$bookedboss[] = $row['boss_id'];
}
更新
所以我沒有做一些改變,並獲得了lane.boss_id和accounts.boss_id的信息
但是,我仍然需要執行以下操作:
如果lane.boss_id 沒有附加帳戶,則執行此操作,如果它有帳戶,則執行此操作。
檢查這種情況的最佳方法是什么? 我打算在“用戶名”上使用 if/else 但我得到了一個關於非法字符串偏移的錯誤......這是我的代碼到目前為止!
$db_host = "localhost";
$db_username = "root";
$db_password = "";
//connect to mysqli database (Host/Username/Password)
$connection = mysqli_connect($db_host, $db_username, $db_password) or die("Error " . mysqli_error());
//select MySQLi dabatase table
$db = mysqli_select_db($connection, "archery-booking") or die("Error " . mysqli_error());
// get ALL lanes from database table "lanes"
$sql = mysqli_query($connection, "SELECT l.*, a.username FROM lanes l LEFT JOIN accounts a ON a.boss_id = l.bossid");
while($row = mysqli_fetch_array($sql)) {
$bossid[] = $row['bossid']['username'];
var_dump($bossid);
}
更新 3
我不能完全感謝你的幫助,我們真的取得了進步!! :D
不過我有 1 個最終請求,我希望你們能像你們一樣提供幫助! :)
所以,在我的腳本中,我有以下內容:
if (isset($uname)) {
echo "<div class='col-xl-3 col-lg-3 col-md-6 col-sm-6 col-xs-6'>
<div class='card bg-normal'>
<div class='card-header day1'>
<p>Lane booked from 6.00pm</p>
</div>
<div class='card-body'>";
echo "<h2 class='lane-title taken'>Lane " . $bossid . "</h2>";
echo "<p class='lead'>Booked by " . $uname . "</p>";
echo "</div>
</div>
</div>";
} else {
echo "<div class='col-xl-3 col-lg-3 col-md-6 col-sm-6 col-xs-6'>
<div class='card bg-normal'>
<div class='card-header day1'>
<p>Lane booked from 6.00pm</p>
</div>
<div class='card-body'>";
echo "<h2 class='lane-title'>Lane " . $bossid . "</h2>";
echo "Lane Available";
echo "</div>
</div>
</div>";
}
這很好用並輸出所需的一切,但是....我需要的是以下內容:
如果沒有用戶名,則顯示 1 個帶有“FREE”標簽的實體
如果用戶名 + 詳細信息 = 1,則顯示 1 個帶有標簽“TAKEN BY $username”的實體
如果用戶名 + 詳細信息 = 1 AND 2,顯示 1 個帶有標簽“TAKEN BY $username1 and $username2”的實體
目前,根據上面的代碼,如果細節 1 和 2 在 boss_id 5 上,那么 boss_id 5 有 2 個實體,其中我只需要 1 個實體同時顯示細節 1 和 2。
希望這是有道理的!! :)
TIA E
你似乎想要一個LEFT JOIN
:
SELECT l.*, a.username
FROM lanes l
LEFT JOIN accounts a ON a.boss_id = l.boss_id
當accounts
boss_id
與boss_id
匹配的記錄時,這會在結果boss_id
帶來相應的username
。 如果沒有匹配項,則username
為null
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.