Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL-选择具有特定权限的用户(内部连接)_Php_Mysql_Select_Inner Join - Fatal编程技术网

Php MySQL-选择具有特定权限的用户(内部连接)

Php MySQL-选择具有特定权限的用户(内部连接),php,mysql,select,inner-join,Php,Mysql,Select,Inner Join,您好,我需要从名为“users”的表中选择具有权限1、2和3的所有用户。 之后,我将使用他们的ID在另一个名为“Status”的表中进行新的选择 如果您只是遇到PHP语法错误,那么您忘记了关闭while循环。以下是更正后的代码: $sql = 'select * from USERS where Privileges != "4"'; $rs = mysqli_query($connect, $sql) or die ("error"); $op = mysqli_num_rows($rs);

您好,我需要从名为“users”的表中选择具有权限1、2和3的所有用户。 之后,我将使用他们的ID在另一个名为“Status”的表中进行新的选择


如果您只是遇到PHP语法错误,那么您忘记了关闭while循环。以下是更正后的代码:

$sql = 'select * from USERS where Privileges != "4"';

$rs = mysqli_query($connect, $sql) or die ("error");
$op = mysqli_num_rows($rs);

while($row = mysqli_fetch_array($rs))
{
    $id = $row['ID'];
    $name = $row['Name'];
    $priv = $row['Privileges'];

    $sql = 'select * from Status where ID="$id"';
    $result = mysqli_query($connect, $sql) or die ("database error");
    $gmon = mysqli_num_rows($result);

    $login = $row['Login'];

    switch($login)
    {
        case "ONLINE":
            $login = "<font color=\"#84FB84\"><strong>".$name."</strong></font>";
            break;
        case "OFFLINE":
            $login = "<font color=\"#46AAEB\"><strong>".$name."</strong></font>";
            break;
        default:
            $login = 'OOPS! The value of $login is '.$login.' that is why nothing is being printed. :(';
    }
}
作者:

$result=mysqli\u query($connect,$sql)或die(“数据库错误:.mysql\u error()。
query:”。$sql);
基本上,登录列应该在状态表中,但它没有被使用。试着这样做:

<?php
include_once("include/connection.php");
$sql  = 'SELECT USERS.*, STATUS.* FROM USERS INNER JOIN STATUS ';
$sql .= 'ON USERS.ID=STATUS.ID WHERE USERS.Privileges != "4"';

$rs = mysqli_query($connect, $sql) or die ("error");
$op = mysqli_num_rows($rs);

while($row = mysqli_fetch_array($rs))
{
    $id = $row['ID'];
    $name = $row['Name'];
    $priv = $row['Privileges'];
    $login = "<font color=\"#46AAEB\"><strong>".$name."</strong></font>";
    $loginStatus = $row['Login'];

    switch($loginStatus)
    {
        case "ONLINE":
            $login = "<font color=\"#84FB84\"><strong>".$name."</strong></font>";
            break;
        case "OFFLINE":
            $login = "<font color=\"#46AAEB\"><strong>".$name."</strong></font>";
            break;
        default:
            $login = "<font color=\"#999999\"><strong>".$name."</strong></font>";
            break;
    }
    $online_adms .= "<td>$login</td>";
}
?>
<?php echo $online_adms; ?>

您可以通过连接选择所有必需的字段

SELECT `ID`,`Name`,`Privileges`,`Login` 
 FROM `USERS` 
 INNER JOIN `Status`
 ON `USERS`.`ID` = `Status`.`ID`
 WHERE Privileges != 4

然后删除第二个查询

是否无效?你能把描述的范围缩小一点吗?有什么错误,为什么代码不起作用?“RedFilter”和“rationalboss”——我分别依赖于两个表:Users和Status。“用户”表,将返回搜索权限下的所有用户。仅筛选所需用户后,我将仅在他们之间搜索在线用户。我看不到您在何处使用$result中存储的值(包含select*from status)。你是故意的吗?好吧,你犯了什么错误$connect在您的完整代码中为空。好的,这非常重要:您得到的错误是什么?没有错误。我可以输出$name,$id…我只是不能输出$login。我更新了代码。这可能是因为$row['Login']包含除在线和离线之外的另一个值,虽然在这种情况下并不严格需要,但可能希望结束默认值:带一个中断;它现在确实显示了用户…但不是普通的。它应该以绿色显示在线,红色显示离线。确定;出于好奇,“Login”的SQL列类型是什么?在这种情况下,我假设它是一个枚举或一个字符串。好的,这两个可能的值是“ONLINE”和“OFFLINE”,而不是“ONLINE”和“OFFLINE”?另外,我更新了我的查询,只使用了一个内部连接,还添加了一个默认登录状态(如果既不在线也不离线,则显示灰色)
$result = mysqli_query($connect, $sql) or die ("database error");
$result = mysqli_query($connect, $sql) or die ("database error: ".mysql_error().'<br />query: '.$sql);
<?php
include_once("include/connection.php");
$sql  = 'SELECT USERS.*, STATUS.* FROM USERS INNER JOIN STATUS ';
$sql .= 'ON USERS.ID=STATUS.ID WHERE USERS.Privileges != "4"';

$rs = mysqli_query($connect, $sql) or die ("error");
$op = mysqli_num_rows($rs);

while($row = mysqli_fetch_array($rs))
{
    $id = $row['ID'];
    $name = $row['Name'];
    $priv = $row['Privileges'];
    $login = "<font color=\"#46AAEB\"><strong>".$name."</strong></font>";
    $loginStatus = $row['Login'];

    switch($loginStatus)
    {
        case "ONLINE":
            $login = "<font color=\"#84FB84\"><strong>".$name."</strong></font>";
            break;
        case "OFFLINE":
            $login = "<font color=\"#46AAEB\"><strong>".$name."</strong></font>";
            break;
        default:
            $login = "<font color=\"#999999\"><strong>".$name."</strong></font>";
            break;
    }
    $online_adms .= "<td>$login</td>";
}
?>
<?php echo $online_adms; ?>
SELECT `ID`,`Name`,`Privileges`,`Login` 
 FROM `USERS` 
 INNER JOIN `Status`
 ON `USERS`.`ID` = `Status`.`ID`
 WHERE Privileges != 4