php得到的mysql结果不是数组,而是文本

时间:2012-05-18 11:57:58

标签: php mysql

我希望获得文字结果:

+----+-------+----------------------------------+----+
| 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)

顺便查询“插入用户设置登录='sp',pwd = 1,su = 0”,此字符串必须为“查询正常,1行受影响,2警告(0.18秒)”。

像sql终端虽然是php!

3 个答案:

答案 0 :(得分:2)

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

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

(丑陋,缓慢,不安全,不推荐);或者简单地将它作为数组,迭代和装饰,并模仿mysql所做的事情(推荐)。这真的很容易。

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

答案 1 :(得分: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);
}

答案 2 :(得分:0)

您可以查询以下sql:

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

AS 'User Object' FROM users group by id

结果将是:

enter image description here