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