Php shell_exec()不返回MySQL结果格式
我想让我的生活更轻松,所以我尝试使用标准命令行命令为我格式化mysql结果Php shell_exec()不返回MySQL结果格式,php,mysql,bash,shell,formatting,Php,Mysql,Bash,Shell,Formatting,我想让我的生活更轻松,所以我尝试使用标准命令行命令为我格式化mysql结果 $query = "select name from accounts limit 10"; $cmd = "mysql -u$user -p$pw -e \"$query\" $db_name"; $ret = shell_exec($cmd); echo $ret; 但我得到的结果是 name 3+kk, s.r.o. 3CLogic. Inc 3ok s.r.o. 3P Consulting, s.r.o. 3x
$query = "select name from accounts limit 10";
$cmd = "mysql -u$user -p$pw -e \"$query\" $db_name";
$ret = shell_exec($cmd);
echo $ret;
但我得到的结果是
name
3+kk, s.r.o.
3CLogic. Inc
3ok s.r.o.
3P Consulting, s.r.o.
3xlab
4profit, s.r.o.
A C T I V A
A test acc
A4B, a.s.
AB Trade Europe s.r.o.
而不是格式化的命令行输出
+------------------------+
| name |
+------------------------+
| 3+kk, s.r.o. |
| 3CLogic. Inc |
| 3ok s.r.o. |
| 3P Consulting, s.r.o. |
| 3xlab |
| 4profit, s.r.o. |
| A C T I V A |
| A test acc |
| A4B, a.s. |
| AB Trade Europe s.r.o. |
+------------------------+
如何使shell_exec()函数返回格式化的表单?如果mysql命令的输出通过管道传输到另一个cmd ie。您的应用程序mysql客户端将删除此信息,您可以使用-t选项将其打开 样本 正常输出
$ mysql -uroot -e "select * from l.user_art"
+----+---------+--------+
| id | user_id | art_id |
+----+---------+--------+
| 1 | 10 | 10 |
| 2 | 20 | 30 |
| 3 | 20 | 80 |
| 4 | 10 | 90 |
| 5 | 20 | 10 |
| 6 | 23 | 10 |
| 7 | 23 | 11 |
| 8 | 23 | 12 |
| 9 | 10 | 11 |
+----+---------+--------+
$ mysql -uroot -e "select * from l.user_art" | cat
id user_id art_id
1 10 10
2 20 30
3 20 80
4 10 90
5 20 10
6 23 10
7 23 11
8 23 12
9 10 11
$ mysql -uroot -t -e "select * from l.user_art" | cat
+----+---------+--------+
| id | user_id | art_id |
+----+---------+--------+
| 1 | 10 | 10 |
| 2 | 20 | 30 |
| 3 | 20 | 80 |
| 4 | 10 | 90 |
| 5 | 20 | 10 |
| 6 | 23 | 10 |
| 7 | 23 | 11 |
| 8 | 23 | 12 |
| 9 | 10 | 11 |
+----+---------+--------+
在其他命令(cat)中通过管道输出
带有optin-t的管道输出
$ mysql -uroot -e "select * from l.user_art"
+----+---------+--------+
| id | user_id | art_id |
+----+---------+--------+
| 1 | 10 | 10 |
| 2 | 20 | 30 |
| 3 | 20 | 80 |
| 4 | 10 | 90 |
| 5 | 20 | 10 |
| 6 | 23 | 10 |
| 7 | 23 | 11 |
| 8 | 23 | 12 |
| 9 | 10 | 11 |
+----+---------+--------+
$ mysql -uroot -e "select * from l.user_art" | cat
id user_id art_id
1 10 10
2 20 30
3 20 80
4 10 90
5 20 10
6 23 10
7 23 11
8 23 12
9 10 11
$ mysql -uroot -t -e "select * from l.user_art" | cat
+----+---------+--------+
| id | user_id | art_id |
+----+---------+--------+
| 1 | 10 | 10 |
| 2 | 20 | 30 |
| 3 | 20 | 80 |
| 4 | 10 | 90 |
| 5 | 20 | 10 |
| 6 | 23 | 10 |
| 7 | 23 | 11 |
| 8 | 23 | 12 |
| 9 | 10 | 11 |
+----+---------+--------+
如果mysql命令的输出通过管道传输到另一个cmd ie。您的应用程序mysql客户端剥离了此信息,您可以使用-t选项将其打开 样本 正常输出
$ mysql -uroot -e "select * from l.user_art"
+----+---------+--------+
| id | user_id | art_id |
+----+---------+--------+
| 1 | 10 | 10 |
| 2 | 20 | 30 |
| 3 | 20 | 80 |
| 4 | 10 | 90 |
| 5 | 20 | 10 |
| 6 | 23 | 10 |
| 7 | 23 | 11 |
| 8 | 23 | 12 |
| 9 | 10 | 11 |
+----+---------+--------+
$ mysql -uroot -e "select * from l.user_art" | cat
id user_id art_id
1 10 10
2 20 30
3 20 80
4 10 90
5 20 10
6 23 10
7 23 11
8 23 12
9 10 11
$ mysql -uroot -t -e "select * from l.user_art" | cat
+----+---------+--------+
| id | user_id | art_id |
+----+---------+--------+
| 1 | 10 | 10 |
| 2 | 20 | 30 |
| 3 | 20 | 80 |
| 4 | 10 | 90 |
| 5 | 20 | 10 |
| 6 | 23 | 10 |
| 7 | 23 | 11 |
| 8 | 23 | 12 |
| 9 | 10 | 11 |
+----+---------+--------+
在其他命令(cat)中通过管道输出
带有optin-t的管道输出
$ mysql -uroot -e "select * from l.user_art"
+----+---------+--------+
| id | user_id | art_id |
+----+---------+--------+
| 1 | 10 | 10 |
| 2 | 20 | 30 |
| 3 | 20 | 80 |
| 4 | 10 | 90 |
| 5 | 20 | 10 |
| 6 | 23 | 10 |
| 7 | 23 | 11 |
| 8 | 23 | 12 |
| 9 | 10 | 11 |
+----+---------+--------+
$ mysql -uroot -e "select * from l.user_art" | cat
id user_id art_id
1 10 10
2 20 30
3 20 80
4 10 90
5 20 10
6 23 10
7 23 11
8 23 12
9 10 11
$ mysql -uroot -t -e "select * from l.user_art" | cat
+----+---------+--------+
| id | user_id | art_id |
+----+---------+--------+
| 1 | 10 | 10 |
| 2 | 20 | 30 |
| 3 | 20 | 80 |
| 4 | 10 | 90 |
| 5 | 20 | 10 |
| 6 | 23 | 10 |
| 7 | 23 | 11 |
| 8 | 23 | 12 |
| 9 | 10 | 11 |
+----+---------+--------+
为什么要在shell中这样做?我看不出从两种输出中得到的格式/布局有什么不同。是否希望网格与数据库中的结果一起显示?如果是的话。这将是比处理结果更值得付出的努力。为什么要在shell中这样做?我看不出从两种输出中得到的格式/布局有什么不同。是否希望网格与数据库中的结果一起显示?如果是的话。他们将付出比处理结果更大的努力