MySQL如果?声明

时间:2013-10-07 19:31:40

标签: php mysql mysqli

在我的MySQL表中,有一行标记为“state”。这可能有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>';
          }
?>

非常感谢所有帮助:)

3 个答案:

答案 0 :(得分: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";
    }

答案 1 :(得分: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天禁令,全季禁令等,您只需更改表中的记录,而不必搜索所有查询和切换语句。

答案 2 :(得分:0)

您可以使用CASE statement中的MYSQL或者如果您没有多个州使用以下代码:

<?
          $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>';
          }
?>