2013-07-06 17 views
1

我试图在列表中使用结构化表单在列表中输出SELECT请求。问题是,我无法正确使用超过2个字段,或者值大于列名。在bash中打印结构化SQL SELECT的简单方法

例子:

我的表看起来像这样:VALUE1 VALUE2

如果我在bash做:回声 “选择值1,值从表” | MySQL的-uUser -pPASS

结果在bash看起来是这样的:

 
value1 value2 
a  d 
b  e 
c  f 

现在,如果我有3个字段或一个较大的值,结果是这样的:

 
value1 value2 value3 
aaaaaaaaa ddddddddddd ggg 
bbbb  eeeeeeeee hhhh 
ccccccc fffffffff iiii 

是否有简单的方法来获得结构化的结果?我的意思是列名正确间隔?我知道有可能通过排序来获得最大的价值并添加所需的空间数量,但对于像这样的简单问题来说似乎太多了。

你有什么想法吗?谢谢 !

回答

3

使用mysql -e选项执行查询,而-t选项表输出打印到标准输出:

MySQL的-uUser -t -e “选择值1,值,从表中值3” -pPASS

输出将是这个样子:

+-----------+-------------+--------+ 
| value1 | value2  | value3 | 
+-----------+-------------+--------+ 
| aaaaaaaaa | ddddddddddd | ggg | 
| bbbb  | eeeeeeeee | hhhh | 
| ccccccc | fffffffff | iiii | 
+-----------+-------------+--------+ 

从MySQL手册页:

--execute=statement, -e statement 

     Execute the statement and quit. The default output format is like that produced with --batch. See Section 4.2.3.1, “Using Options on 
     the Command Line”, for some examples. With this option, mysql does not use the history file. 

-table, -t 

     Display output in table format. This is the default for interactive use, but can be used to produce table output in batch mode. 
0

这样做的一个好方法是通过不使用Echo将所有内容打印到网页上,而是需要为每个对象分配一个数组变量。

将是这样的:

int x[50]; 

x[i] = $value // which is from SELECT Query 
i++ 

,并把它放在一个循环,所以结果每次都会在数组的新位置存储。一旦你已经保存在阵列中的所有搜索结果,这将是更容易为你安排,你可以在HTML

<table /> 

使用表,并组织它,使之有效地为您轻松的把的数组在循环中变量,所以基本上你会有2个循环。 1st Loop将数组分配给数据库属性,Second Loop将用于在HTML表格中打印。

+0

输出是在bash shell,在HTML :) – Arka

+0

然后,你需要通过添加回声来组织它在PHP “|”, “ - ”。和“”来创建你的表,也需要开发一个函数,它将在所有数组中看到什么是最大的字符串,多少个字符和每个字符都使用“ - ”。将是一些长时间的工作,大约50行的PHP代码有3个循环和2个条件。 – victory

+0

它不是PHP/MYSQL,输出打印在Linux Shell中。 – Arka

0
echo "select value1, value2 from table" | mysql -uUSER -pPASS | column -t