Если вы хотите сделать это без вызова клиента командной строки, вот способ PHP. Обратите внимание, что это довольно грубый код, и я его не тестировал, я просто пытаюсь объяснить процесс. Это также будет выравнивать все по левому краю, я полагаю, что клиент mysql выравнивает числа по правому краю, эмулируя, что потребует немного больше работы, но ничего сложного.
Предполагая, что вы извлекли записи в массив только для ассоциаций с именем $resultset
, используя что-то вроде функции fetch_all()
mysqli_result:
// 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";