簡體   English   中英

循環時將查詢與PHP進行比較

[英]Comparing queries with PHP while loop

這是我的表設置:

  • 員工:員工信息,姓名,地址等。
  • 組:通訊組列表。
  • employee2group:將員工鏈接到多個組的表。

我以這種方式進行設置,以便將來可以添加組,而不必在我的員工表中添加列。 這對你們所有人來說似乎都是常識,但幾個月前我剛開始使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM