You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP后台面板中将MySQL布尔值替换为自定义友好字符串?

如何在PHP管理员面板中将布尔值0/1转换为友好文本"broken"/"working"

我的管理员面板PHP脚本用于显示设备损坏状态,目前数据库的布尔字段rueck_damage在表格中仅显示0或1。我需要将0替换为"broken"、1替换为"working"以提升用户友好性,且不修改数据库中的原始布尔数据。以下是当前的面板代码:

<?php
session_start();
if (!isset($_SESSION['admin'])) {
    header("location: login.php");
    die();
}

require "conn.php";
?>

<html>
    <head>
        <meta charset="UTF-8" />
        <title>Rückgabe: Admin</title>
        <link href="rueckgabe-admin.css" rel="stylesheet" />
    </head>
    <body style="margin: 50px;">
        <h1>Rückgaben</h1>
        <a class="btn btn-primary btn-sm" href="ausleihe-admin.php" role="button">Ausleihen</a><a class="btn btn-primary btn-sm" href="ctouch-admin.php" role="button">CTOUCH</a><a class="btn btn-primary btn-sm" href="id-admin.php" role="button">ID</a><a class="btn btn-danger btn-sm" href="logout.php" role="button">Abmelden</a>
        <br>
        <table class="table">
            <thead>
                <tr>
                    <th>MYSQL-ID</th>
                    <th>Hardware-ID</th>
                    <th>Lehrkraft</th>
                    <th>Beschädigt?</th>
                    <th>Rückgabedatum</th>
                    <th>Aktion</th>
                </tr>
            </thead>
            
            <tbody>
                <?php
                //Rückgabe auslesen
                $sql = "SELECT * FROM rueckgabe";
                $result = $conn->query($sql);
                
                if (!$result) {
                    die("Falsche Anfrage: " . $conn->error);
                }
                
                //Alle Zeilen und Spalten lesen
                while($row = $result->fetch_assoc()) {
                    echo "<tr>
                        <td>" . $row["id"] . "</td>
                        <td>" . $row["rueck_id"] . "</td>
                        <td>" . $row["rueck_lehrkraft"] . "</td>
                        <td>" . $row["rueck_damage"] . "</td>
                        <td>" . $row["rueck_datum"] . "</td>
                        <td>
                            <a class='btn btn-danger btn-sm' href='rueckgabe-delete.php?id=$row[id]'>Löschen</a>
                        </td>
                    </tr>";
                }
                
                ?>
            </tbody>
        </table>
    </body>
</html>

表头“Beschädigt?”对应字段rueck_damage,请问如何在表格中转换显示文本?


解决方案

以下几种方法都能实现需求,且不会修改数据库中的原始数据:

方法1:使用PHP三元运算符(最简洁)

直接在输出字段的位置添加判断逻辑,替换原有的$row["rueck_damage"]输出:

<td><?php echo $row["rueck_damage"] == 1 ? "working" : "broken"; ?></td>

或者先在循环内定义变量,再输出,代码可读性更好:

while($row = $result->fetch_assoc()) {
    // 转换状态文本
    $damageStatus = $row["rueck_damage"] == 1 ? "working" : "broken";
    
    echo "<tr>
        <td>" . $row["id"] . "</td>
        <td>" . $row["rueck_id"] . "</td>
        <td>" . $row["rueck_lehrkraft"] . "</td>
        <td>" . $damageStatus . "</td>
        <td>" . $row["rueck_datum"] . "</td>
        <td>
            <a class='btn btn-danger btn-sm' href='rueckgabe-delete.php?id=$row[id]'>Löschen</a>
        </td>
    </tr>";
}

方法2:使用if-else判断(更直观)

如果觉得三元运算符不够清晰,用标准的条件判断:

while($row = $result->fetch_assoc()) {
    if ($row["rueck_damage"] == 1) {
        $damageStatus = "working";
    } else {
        $damageStatus = "broken";
    }
    
    // 后续echo代码同上,使用$damageStatus输出
}

方法3:在SQL查询中直接转换(可选)

也可以在查询数据库时就完成文本转换,PHP中直接输出转换后的字段:

SELECT 
    id, 
    rueck_id, 
    rueck_lehrkraft, 
    CASE WHEN rueck_damage = 1 THEN 'working' ELSE 'broken' END AS damage_status,
    rueck_datum 
FROM rueckgabe

然后在PHP循环中输出$row["damage_status"]即可:

<td>" . $row["damage_status"] . "</td>

内容的提问来源于stack exchange,提问作者MLueh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:30:47