1

在我的 MySQL 表中,有一行标记为“状态”。有 3 个可能的值。我如何利用 PHP 在状态下将“Unbanned”与“0”相呼应?与“1”相对的“禁止”和与“3”相对的“临时禁止”?

我将如何使用 php 在 MySQL 中显示“UnBanned”而不是 0?我为此使用了一张桌子。

<?
          while($row = $result->fetch_assoc()){
          echo'<td>' . $row['player'] . '</td>';
          echo'<td>' . $row['admin'] . '</td>';
          echo'<td>' . $row['reason'] . '</td>';
          echo'<td>' . $row['created_at'] . '</td>';
          echo'<td>' . $row['expires_at'] . '</td>';
          echo'<td>' . $row['state'] . '</td>' . '</tr>';
          }
?>

非常感谢所有帮助:)

4

3 回答 3

3

您可以通过 PHP 或 MySQL 来完成。有很多可能性。

SELECT
    CASE
        WHEN state = 0 THEN 'UnBanned'
        WHEN state = 1 THEN 'Banned'
        ELSE 'Temp-Banned'
    END AS state

在 PHP 中:

while ($row = $result->fetch_assoc()) {
    switch ($row['state']) {
        case 0: $row['state'] = "UnBanned";
            break;
        case 1: $row['state'] = "Banned";
            break;
        default: $row['state'] = "Temp-Banned";
    }
于 2013-10-07T19:34:51.283 回答
2
<?
while($row = $result->fetch_assoc()){
    echo'<td>' . $row['player'] . '</td>';
    echo'<td>' . $row['admin'] . '</td>';
    echo'<td>' . $row['reason'] . '</td>';
    echo'<td>' . $row['created_at'] . '</td>';
    echo'<td>' . $row['expires_at'] . '</td>';

 switch ($row['state']){
    case 0: echo '<td>Unbanned</td>';
        break;
    case 1: echo '<td>Banned</td>';
        break;
    case 3: echo '<td>Temp-Banned</td>';
        break;
      } 
}
?>

或者,您可以查找表以了解记录所在的状态:

STATE
STATEID STATE
0       Unbanned
1       Banned
3       Temp-Banned

在你的玩家表中,你有一个状态的外键,它只包含 StateId。

将您的查询更改为:

SELECT * FROM Players JOIN STATE on STATE.STATEID=Players.state WHERE...

我喜欢打破这样的东西,它使以后创建可选列表变得容易,如果创建其他可能的状态,从长远来看它更具可扩展性......比如如果你想将 Temp-Banned 分成几个组,30- 60 天禁令、全季禁令等,您只需更改表中的记录,而不必搜索所有查询和 switch 语句。

于 2013-10-07T19:38:27.393 回答
0

You could use the CASE statement in MYSQL OR if you don't have many states use the following code:

<?
          $a = array('0'=>'Unbanned','1'=>'Banned','3'=>'Temp-Banned');
          while($row = $result->fetch_assoc()){
          echo'<td>' . $row['player'] . '</td>';
          echo'<td>' . $row['admin'] . '</td>';
          echo'<td>' . $row['reason'] . '</td>';
          echo'<td>' . $row['created_at'] . '</td>';
          echo'<td>' . $row['expires_at'] . '</td>';
          echo'<td>' . $a[$row['state']] . '</td>' . '</tr>';
          }
?>
于 2013-10-07T19:40:33.437 回答