我希望获得文字结果:
+----+-------+----------------------------------+----+
| 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!
答案 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
结果将是: