2016-12-04 48 views
1

我想讓我的生活更輕鬆,所以我嘗試使用標準命令行命令爲我設置mysql結果的格式。shell_excec()不返回格式化的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()函數返回格式化的形式?

+0

爲什麼在shell中這樣做? –

+0

我發現從任何一個輸出得到的格式/佈局沒有區別。你想要網格與數據庫的結果一起嗎?如果是這樣。 Thays要比處理結果值得付出更多的努力 –

回答

0

如果從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 | 
+----+---------+--------+ 

輸出在其他CMD(貓)管道

$ 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 

管道輸出與選擇啓用-t

$ 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 | 
+----+---------+--------+