在PHP中从shell_exec调用时,MySQL表轮廓未出现

时间:2019-04-25 16:18:24

标签: php mysql linux bash

如果我直接从命令行运行MySQL查询,则在运行类似于输出的PHP程序时,我试图输出MySQL结果的可视表。但是,当我通过shell_exec运行查询时,它不会在数据周围输出漂亮的表行。

mysql DB_NAME -e "SELECT * FROM TABLE_NAME;"

+-------+-------+-------+-------+-------+-------+
| row1  | row2  | row3  | row4  | row5  | row6  |
+-------+-------+-------+-------+-------+-------+
| data1 | data2 | data3 | data4 | data5 | data6 |
+-------+-------+-------+-------+-------+-------+

PHP:

$output = shell_exec( "mysql DB_NAME -e \"SELECT * FROM TABLE_NAME;\"" );

但是,上述PHP代码不会输出带有边框的表格。

让我知道我是否可以澄清任何事情!

2 个答案:

答案 0 :(得分:2)

这是正常的CLI行为。以下是official documentation的摘录:

  

如果未指定resultFormat配置选项,则当MySQL Shell处于交互模式时,用于打印结果集的默认格式为带格式的表,而当MySQL Shell为批处理模式时,则为默认格式用于打印结果集的是制表符分隔的输出。

附录:如何更改默认格式

在同一文章中,上述内容之后几行中,有以下段落:

  

或者,可以在启动时使用命令行选项--result-format或其别名(--table--tabbed--vertical)来指定会话的输出格式。

答案 1 :(得分:1)

好吧,我的老板抓紧时间找到了解决方案。在mysql命令的末尾添加一个--table,然后shell_exec(以及任何与此相关的重定向文件)将获得表轮廓的格式。

mysql DB_NAME -e "SELECT * FROM TABLE_NAME;" --table

感谢大家的帮助!