0

こんにちは、「USERS」という名前のテーブルから、特権 1、2、および 3 を持つすべてのユーザーを選択する必要があります。その後、ID を使用して、"Status" という名前の別のテーブルで新しい選択を行います。

<?php
include_once("include/connection.php");
$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;
    }
    $online_adms .= "<td>$login</td>";
}
?>
<?php echo $online_adms; ?>

UPDATE 「$login」変数の出力を取得できません...「$name」または「$id」を出力しようとすると、正常に動作します...しかし、「$login」を出力する必要があります。ここで INNER JOin を使用できると思います...

手がかりはありますか?

ありがとう。

解決

$sql = 'SELECT c.Name, c.ID, c.Privileges, d.Login FROM USERS c 
        INNER JOIN Status d 
        ON c.ID = d.ID
        where Privileges != 4';
4

3 に答える 3

1

結合ですべての必須フィールドを選択できます

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

次に、2番目のクエリを削除します

于 2012-09-10T17:18:18.070 に答える
0

基本的に、Login列はStatusテーブルにあるはずですが、使用されていませんでした。次のようなものを試してください。

<?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; ?>
于 2012-09-10T16:52:08.517 に答える
0

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_query($connect, $sql) or die ("database error");

に:

$result = mysqli_query($connect, $sql) or die ("database error: ".mysql_error().'<br />query: '.$sql);
于 2012-09-10T16:33:19.030 に答える