我在数据库中有两个表,名为groups(groupID,groupName)和userBelongToGroups(userID,groupID)。

groups                      userBelongToGroups
===================       =====================
groupID | groupName        userID | groupID
-------------------       ---------------------
   1    | A                   1   |   1
   2    | B                   1   |   2
   3    | C                   2   |   2
   4    | D                   3   |   1
                              3   |   3
                              4   |   4


我想在下拉菜单中显示当前用户的groupName列的所有值。

<select class="form-control" id="system_tags" name="system_tags">
     <?php
        $userID = $_SESSION['userID'];

        // select the values from 'groupName' column
        $sql = "SELECT groupName FROM groups, userBelongToGroups WHERE userID = '$userID' and `groups.groupID = userBelongToGroups.groupID`";

        $result = mysqli_query($connection, $sql);
        // display the values from 'groupName' table column
        while ($row = mysqli_fetch_array($result)){
         echo "<option value='".$row['groupName']."'>".$row['groupName']."</option>";
        } ?>
</select>


因此,当'$ userID'= 1时,它应该在下拉菜单中显示两个选项A和B。

注意:SQL查询可在MySQL中完美运行。

SELECT groupName FROM groups, userBelongToGroups WHERE userID = '1' and groups.groupID = userBelongToGroups.groupID

最佳答案

查询的这一部分存在一些印刷错误:
php - html下拉菜单中的php-mysql查询输出-LMLPHP

它应该读
WHERE userID = '$userID' and groups.groupID = userBelongToGroups.groupID";

如果未设置默认值,则尝试从会话中设置$ userID也会导致错误。因此,您应该使用$userID = $_SESSION['userID']代替:

$userID = 0;
if(isset($_SESSION['userID'])){$userID = $_SESSION['userID'];}


最后,您可以考虑在此类查询中使用JOIN,例如:

SELECT a.groupName FROM groups a JOIN userBelongToGroups b ON a.groupID = b.groupID AND b.userID = '$userID';

关于php - html下拉菜单中的php-mysql查询输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46798378/

10-16 14:57