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

PHP处理MSSQL数据:修改显示值及提取纯数据问询

MSSQL数据显示格式化与纯数据提取方案

一、修改数据显示形式(自定义文本替换)

原代码中odbc_result_all()会直接输出原始数值的表格,无法自定义显示内容。我们可以手动遍历查询结果,构建HTML表格的同时将数值替换为对应文本,完全无需修改原表数据:

修改后的完整代码示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Espace Client</title>
    <style>
        table { border-collapse: collapse; margin: 0 auto; }
        th, td { border: 1px solid #ccc; padding: 8px; text-align: center; }
        th { background-color: #f2f2f2; }
    </style>
</head>
<body>
    <center><div class="Informations">
    <?php
        // 补充实际数据库连接信息
        $dsn = "";
        $user = "";
        $password = "";
        $conn = odbc_connect($dsn, $user, $password);

        // 查询语句
        $sql = <<<EOF
                SELECT top 10 [enc_cmd_num], [enc_paye], enc_prepared, enc_emporte, enc_heure_fab_fin, enc_ext_ref
                FROM [encaissement]
                WHERE enc_date= '20221130'
                EOF;

        $results = odbc_exec($conn, $sql);

        // 手动构建自定义表格
        echo "<table>";
        // 自定义表头
        echo "<tr>
                <th>订单编号</th>
                <th>支付状态</th>
                <th>订单状态</th>
                <th>已取走</th>
                <th>制作完成时间</th>
                <th>外部参考号</th>
              </tr>";
        
        while($resultrow = odbc_fetch_array($results)) {
            // 处理enc_paye字段的数值替换
            switch($resultrow['enc_paye']){
                case 0:
                    $pay_status = "待支付";
                    break;
                case 1:
                    $pay_status = "订单处理中";
                    break;
                default:
                    $pay_status = "未知";
            }

            // 处理enc_prepared字段的数值替换(可根据实际值扩展)
            $prepare_status = $resultrow['enc_prepared'] == 1 ? "订单已就绪" : "未就绪";

            // 输出格式化后的行数据
            echo "<tr>
                    <td>{$resultrow['enc_cmd_num']}</td>
                    <td>$pay_status</td>
                    <td>$prepare_status</td>
                    <td>{$resultrow['enc_emporte']}</td>
                    <td>{$resultrow['enc_heure_fab_fin']}</td>
                    <td>{$resultrow['enc_ext_ref']}</td>
                  </tr>";
        }
        echo "</table>";

        odbc_close($conn);
    ?>
    </div></center>
</body>
</html>

核心说明:

  • 移除自动生成表格的odbc_result_all(),改为手动构建表格,完全控制每个字段的显示内容
  • 通过switch和三元运算符实现数值到文本的映射,逻辑清晰且不影响原表数据
  • 可根据业务需求随时扩展更多数值对应的文本描述

二、提取纯数据(移除表格文本)

如果不需要HTML格式,仅需提取纯数据,可以将查询结果存入数组,输出为纯文本、JSON等格式:

示例1:纯文本格式输出

<?php
    // 数据库连接(补充实际信息)
    $dsn = "";
    $user = "";
    $password = "";
    $conn = odbc_connect($dsn, $user, $password);

    $sql = <<<EOF
            SELECT top 10 [enc_cmd_num], [enc_paye], enc_prepared, enc_emporte, enc_heure_fab_fin, enc_ext_ref
            FROM [encaissement]
            WHERE enc_date= '20221130'
            EOF;

    $results = odbc_exec($conn, $sql);
    $data = [];

    // 遍历结果存入数组,同时完成数值替换(不需要替换可跳过此步骤)
    while($resultrow = odbc_fetch_array($results)) {
        $resultrow['enc_paye'] = $resultrow['enc_paye'] == 1 ? "订单处理中" : ($resultrow['enc_paye'] == 0 ? "待支付" : "未知");
        $resultrow['enc_prepared'] = $resultrow['enc_prepared'] == 1 ? "订单已就绪" : "未就绪";
        $data[] = $resultrow;
    }

    // 输出纯文本,每行一条数据
    foreach($data as $item) {
        echo "订单编号:{$item['enc_cmd_num']} | 支付状态:{$item['enc_paye']} | 订单状态:{$item['enc_prepared']} | 已取走:{$item['enc_emporte']} | 制作完成时间:{$item['enc_heure_fab_fin']} | 外部参考号:{$item['enc_ext_ref']}\n";
    }

    odbc_close($conn);
?>

示例2:JSON格式输出(便于后续系统解析)

在上述代码基础上,将输出部分替换为:

echo json_encode($data, JSON_UNESCAPED_UNICODE);

输出的JSON为纯数据结构,可直接被前端或其他业务系统调用使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:05:18