2016-12-04 4 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

なぜシェルでこれを行うのですか? –

+0

いずれの出力からも得られるフォーマット/レイアウトに違いはありません。グリッドをデータベースの結果と一緒にしますか?もしそうなら。結果を処理する価値よりも多くの努力が必要です –

答えて

0

mysqlコマンドの出力が他のcmdにパイプされた場合、つまり、あなたのアプリケーションのmysqlクライアントは、この情報を削除します。-tオプションをオンにすることができます。他のCMD(CAT)にパイプ

サンプル

正常出力

$ 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 

-tのoptinと出力をパイプ

$ 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 | 
+----+---------+--------+ 
関連する問題