2013-10-07 204 views
1

在我的MySQL表中,有一行標記爲「狀態」。有三種可能的值。我怎麼可以利用PHP回聲「解除綁定」爲狀態中的「0」?與「3」一樣,「禁止」爲「1」和「溫度禁止」?MySQL如果?聲明

我該如何使用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>'; 
      } 
?> 

所有幫助是非常讚賞:)

+0

發表您的查詢。 – Mihai

+0

@Mihai http://pastebin.com/1H1FyefC –

回答

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"; 
    } 
+2

我覺得OP應該創造可能的狀況 – Kermit

+0

表@FreshPrinceOfSO這將工作的偉大,因爲你可以通過參加上這將是數的ID選擇國家的名字 –

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天禁令,整季禁令等,您只需更改表中的記錄,而不必搜索所有查詢和切換語句。

+1

您在'switch()'中忘記了'case' :-P –

0

你可以在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>'; 
      } 
?>