[英]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.