-2

我想得到如下文本结果:

+----+-------+----------------------------------+----+
| id | login | pwd                              | su |
+----+-------+----------------------------------+----+
|  1 | root  | c4ca4238a0b923820dcc509a6f75849b |  1 |
+----+-------+----------------------------------+----+
1 row in set (0.00 sec)

在 PHP(字符串)中。

php中的示例:

$query = mysql_query("SELECT * FROM users");
for (; $row = mysql_fetch_assoc($query); $data[] = $row);

我得到数组数组($data):

$data = 
   0 => (id=>1, login=>root..)

但我想把它作为字符串

+----+-------+----------------------------------+----+
| id | login | pwd                              | su |
+----+-------+----------------------------------+----+
|  1 | root  | c4ca4238a0b923820dcc509a6f75849b |  1 |
+----+-------+----------------------------------+----+
1 row in set (0.00 sec)

顺便说一句,查询“insert into users set login = 'sp', pwd = 1, su = 0”,这个字符串必须是“Query OK, 1 row affected, 2 warnings (0.18 sec)”。

像 sql 终端虽然 php!

4

3 回答 3

2

要么调用mysql客户端作为外部命令,要么自己构建 ASCII 绘图表。你不能纯粹通过使用 PHP 的 MySQL 库函数来获得它。从我的头顶,

$result = `echo 'SELECT * FROM users' | mysql --user=username --password=password dbname`;

(丑陋,缓慢,不安全,不推荐);或者简单地将它作为数组,迭代,并用模仿什么的加号装饰mysql(推荐)。这真的很容易。

但是,我不知道您为什么要这样做,除非您将 PHP 程序用作命令行工具。

于 2012-05-18T12:04:16.507 回答
0

将数据库结果收集到数组数组中(您的 $data 变量是正确的)

echo ascii_table($data);

我从一个叫 stereofrog 的人那里偷了以下东西

function ascii_table($data) {

    $keys = array_keys(end($data));

    # calculate optimal width
    $wid = array_map('strlen', $keys);
    foreach($data as $row) {
        foreach(array_values($row) as $k => $v)
            $wid[$k] = max($wid[$k], strlen($v));
    }

    # build format and separator strings
    foreach($wid as $k => $v) {
        $fmt[$k] = "%-{$v}s";
        $sep[$k] = str_repeat('-', $v);
    }
    $fmt = '| ' . implode(' | ', $fmt) . ' |';
    $sep = '+-' . implode('-+-', $sep) . '-+';

    # create header
    $buf = array($sep, vsprintf($fmt, $keys), $sep);

    # print data
    foreach($data as $row) {
        $buf[] = vsprintf($fmt, $row);
        $buf[] = $sep;
    }

    # finis
    return implode("\n", $buf);
}
于 2012-05-18T12:50:04.650 回答
0

您可以查询以下sql:

SELECT GROUP_CONCAT(id, ' | ', login, ' | ', pwd, ' | ', su) 

AS 'User Object' FROM users group by id

结果将是:

在此处输入图像描述

于 2012-05-21T01:45:35.520 回答