使用PHP以MySQL格式打印结果

时间:2011-05-24 03:33:57

标签: php mysql

有没有办法以与终端相同的格式打印MySQL查询的结果?

类似的东西:

+--------+------------------------------+------+------+
| id     | name                         | year | rank |
+--------+------------------------------+------+------+
|  10920 | Aliens                       | 1986 |  8.2 |
|  17173 | Animal House                 | 1978 |  7.5 |
|  18979 | Apollo 13                    | 1995 |  7.5 |
|  30959 | Batman Begins                | 2005 | NULL |
|  46169 | Braveheart                   | 1995 |  8.3 |
| 109093 | Fargo                        | 1996 |  8.2 |

我从php查询数据库。

任何帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:4)

查看sprintf/printf

echo '+--------+------------------------------+------+------+';
echo '| id     | name                         | year | rank |';
echo '+--------+------------------------------+------+------+';

foreach (...) {
    printf('| %6s | %-28s | %4s | %4s |', $row['id'], $row['name'], $row['year'], $row['rank']);
}

但是,对于长度超过预定义列大小的任何内容,您都会遇到问题。您可以通过首先查看值并确定最长值是什么来制作可扩展到正确大小的动态列宽。在这种情况下,对于水平线,请使用str_repeat。我会把它作为锻炼给你。

答案 1 :(得分:1)

为什么不使用HTML打印?这比ASCII

更容易

答案 2 :(得分:0)

...技术上

$sql = "SELECT id, name, year, rank FROM Table"
echo '<pre>';
system("mysql mysql --user=$user_name --password=$your_password $db_name -q $sql")
echo '</pre>';

但请不要,因为这是一个很大的安全问题,只是认为不好。

同样,这个答案取决于你如何定义“MySQL如何做到”和“简单”。

强烈建议使用类似问题中提到的内容:Print table data mysql php

或者@deceze提到的,虽然使用sprintf不是很灵活,但它可以完成工作。