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

如何在PHP与HTML中按字符|对齐SQL查询的结构化数据

实现SQL查询结果按|竖线对齐展示的PHP方案

核心思路

要实现规整的竖线对齐,不能直接查询后立即拼接输出,需要先统计每一列的最大字符宽度,再将每个字段填充到对应宽度后拼接成统一格式。

具体实现代码

<?php
// 数据库连接配置
$host = 'localhost';
$user = 'your_username';
$password = 'your_password';
$dbname = 'your_database';

// 建立mysqli连接
$conn = new mysqli($host, $user, $password, $dbname);
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 查询USERTOMOVIE表数据,先获取表头和所有数据
$sql = "SELECT * FROM USERTOMOVIE";
$result = $conn->query($sql);

if (!$result) {
    die("查询失败: " . $conn->error);
}

// 收集所有行数据(包括表头)
$rows = [];
// 获取表头
$headers = [];
for ($i = 0; $i < $result->field_count; $i++) {
    $field = $result->fetch_field();
    $headers[] = $field->name;
}
$rows[] = $headers;

// 获取所有数据行
while ($row = $result->fetch_assoc()) {
    $rows[] = array_values($row);
}

// 计算每一列的最大宽度(兼容中文等多字节字符)
$columnWidths = [];
foreach ($rows as $row) {
    foreach ($row as $index => $value) {
        $length = mb_strlen($value, 'UTF-8');
        if (!isset($columnWidths[$index]) || $length > $columnWidths[$index]) {
            $columnWidths[$index] = $length;
        }
    }
}

// 格式化输出每一行
foreach ($rows as $row) {
    $formattedFields = [];
    foreach ($row as $index => $value) {
        // 左对齐填充空格到对应列宽,需右对齐可改为STR_PAD_LEFT
        $formattedFields[] = str_pad($value, $columnWidths[$index], ' ', STR_PAD_RIGHT);
    }
    echo implode(' | ', $formattedFields) . PHP_EOL;
    
    // 表头下方添加分隔线(可选,增强可读性)
    if ($row === $headers) {
        $separator = [];
        foreach ($columnWidths as $width) {
            $separator[] = str_repeat('-', $width);
        }
        echo implode('-|-', $separator) . PHP_EOL;
    }
}

// 关闭连接
$conn->close();
?>

关键细节说明

  • 多字节字符兼容:用mb_strlen替代strlen,避免中文、emoji等多字节字符的长度计算偏差。
  • 对齐方式调整:通过STR_PAD_RIGHT/STR_PAD_LEFT可灵活切换字段的左/右对齐方式。
  • 分隔线可选:表头下方的分隔线能让输出结构更清晰,不需要可直接删除对应代码段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:55:29