簡體   English   中英

MySQL是否? 聲明

[英]MySQL if? statement

在我的MySQL表中,有一行標記為“狀態”。 為此有3個值。 我如何利用PHP回顯狀態中與“ 0”相對應的“ Unbanned”? 和“禁止”與“ 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>';
          }
?>

非常感謝所有幫助:)

您可以通過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";
    }
<?
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天禁令,全季禁令等,您只需更改表中的記錄,而不必搜索所有查詢和切換語句。

您可以在MYSQL使用CASE statement ,或者如果沒有很多州,請使用以下代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM