Php MySQL-选择具有特定权限的用户(内部连接)
您好,我需要从名为“users”的表中选择具有权限1、2和3的所有用户。 之后,我将使用他们的ID在另一个名为“Status”的表中进行新的选择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);
如果您只是遇到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