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
相关产品推荐
相关产品推荐

