[英]Comparing queries with PHP while loop
這是我的表設置:
我以這種方式進行設置,以便將來可以添加組,而不必在我的員工表中添加列。 這對你們所有人來說似乎都是常識,但幾個月前我剛開始使用PHP,所以一切都還是新的,讓我感到困惑。
所以,我正在處理我的更新表單,它將顯示一個復選框列表,其中填充了一個簡單的SELECT * FROM group
查詢。 我的想法是,當我在更新表單中查看員工時,顯示員工所屬的“已檢查”。
當前,我的while循環顯示復選框列表是這樣的:
<?php
$group_list_query = "SELECT * FROM group"
$group_list_result = mysql_query($group_list_query, $cmsWrite)
while ($row = mysql_fetch_assoc($group_list_result)) {
echo "<input type=\"checkbox\" name=\"distro_{$row['group_name']}\"> {$row['group_name']}";
}
?>
很簡單。 我可能在其中存在一些語法錯誤,但是在我的代碼中它們不存在,因為它可以正常工作。
所以我需要做的是運行另一個只返回員工所屬組的名稱的查詢:
SELECT group.group_name
FROM group JOIN employee2group ON group.group_id = employee2group.group_id
WHERE employee2group.employee_id ='{$_GET['employee_id']}'
然后,我需要比較兩個查詢,並在沒有匹配時輸出一個普通的復選框,並在匹配時輸出一個選中的復選框。
我嘗試使用設置$row = query1
和$row2 = query2
的while語句,並比較$row
和$row2
值,但之后它只返回兩個查詢都有結果的實例,而不是所有查詢。
我希望這是有道理的,我已經拖了一段時間互聯網,並沒有找到任何與我的問題有關的東西。
謝謝閱讀!
兩種解決方案
1:獲取用戶所屬的groupId的數組,然后在遍歷組列表時進行。 使用in_array檢查ID是否在該數組中,如果不顯示該復選框
2:在employee2group表上進行左聯接,並檢查該值是否等於null,如果其null顯示復選框。
-
毫無疑問,但您還應該考慮使用綁定的參數,而不是像這樣僅將它們包括在sql語句中,否則將其留給sql注入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.