如果我直接从命令行运行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代码不会输出带有边框的表格。
让我知道我是否可以澄清任何事情!
答案 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
感谢大家的帮助!