在博客文章中将MySQL表显示为ASCII

时间:2009-03-03 23:06:34

标签: mysql wordpress-plugin recordset

我想在博客文章中快速显示MySQL记录集,使用与mysql.com在其帮助页面中使用的类似的ASCII布局。我正在使用wordpress v2.7。有任何想法吗?我还应该补充一点,我使用wp语法进行语法高亮,因此它实际上只是生成我感兴趣的ASCII。

3 个答案:

答案 0 :(得分:1)

如果你的意思是

+----+------+
| id | name |
+----+------+
|  1 | Bob  |
|  2 | Mary |
|  3 | Jane |
|  4 | Lisa |
+----+------+

然后只需从MySQL命令行运行查询就足够了,因为在命令行上以交互模式运行查询时格式化结果。然后,您可以将它们复制并粘贴到您的博文中,如果需要,可以使用<pre>或类似内容将其包围。

答案 1 :(得分:0)

您所说的ASCII是MySQL命令行客户端的结果。

mysql> select task_nextrun,task_name from pref_task;
+--------------+-----------------+
| task_nextrun | task_name       |
+--------------+-----------------+
|   1235999760 | datacache_clean |
|   1236002760 | process_stats   |
+--------------+-----------------+
2 rows in set (0.00 sec)

mysql>

您只需要将命令发送到MySQL命令行客户端。

答案 2 :(得分:0)

如果你想在不调用命令行客户端的情况下这样做,这里是PHP的一种方式。请注意,这是相当粗糙的代码,我还没有测试过,我主要是试图解释这个过程。它也将左对齐所有内容,我相信mysql客户端右对齐数字,模拟这需要更多的工作,但没什么困难。

假设您已将记录提取到名为$resultset的仅关联数组中,使用类似mysqli_result的fetch_all()函数:

// determine maximum value lengths for each column
foreach ($resultset as $result)
{
    foreach ($result as $col => $val)
    {
        if (strlen($val) > $max_length[$col])
        {
            $max_length[$col] = strlen($val);
        }
    }
}

// construct border lines
foreach ($max_length as $col_length)
{
    $border_line .= '+'.str_repeat('-', $col_length+2);
}
$border_line .= "+";

// print header
print $border_line."<br />\n";
foreach ($max_length as $col_name => $col_length)
{
    print '| '.str_pad($col_name, $col_length, ' ').' |';
}
print "<br />\n";
print $border_line."<br />\n";

// print data
foreach ($resultset as $result)
{
    foreach ($result as $col => $val)
    {
        print '| '.str_pad($val, $max_length[$col], ' ').' |';
    }
    print "<br />\n";
}
print $border_line."<br />\n";