Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php shell_exec()不返回MySQL结果格式_Php_Mysql_Bash_Shell_Formatting - Fatal编程技术网

Php shell_exec()不返回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

我想让我的生活更轻松,所以我尝试使用标准命令行命令为我格式化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.
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中这样做?我看不出从两种输出中得到的格式/布局有什么不同。是否希望网格与数据库中的结果一起显示?如果是的话。他们将付出比处理结果更大的努力