2014-01-29 31 views
-6

如果我尝试在php数据库中搜索列名'*',它会列出所有列条目。有什么方法可以搜索列名'*'我们如何在php中搜索数据库中的列'*'?

+1

我可以看到你的表格结构吗? – user2936213

+0

当我们执行'SELECT * FROM ...'时,它意味着“选择表中的所有列”。 – Rachcha

+4

你是什么意思列名''*“'?你有一个名称为“*”的专栏吗? –

回答

2

如果你想使用*作为列名,然后用反引号(')

create table test(`*` int, var2 int); 
select `*` from test 

下面是一个例子Fiddle

+1

+1给出正确的答案,尽管我仍然不明白为什么有人会认为这样的数据库设置是个好主意。 – Spudley

0
mysql> 
mysql> CREATE TABLE test_(`*` INT); 
Query OK, 0 rows affected (0.28 sec) 

mysql> 
mysql> desc test_; 
+-------+---------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+-------+---------+------+-----+---------+-------+ 
| *  | int(11) | YES |  | NULL |  | 
+-------+---------+------+-----+---------+-------+ 
1 row in set (0.00 sec) 


mysql> SELECT COLUMN_NAME,TABLE_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME = '*' AND TABLE_SCHEMA = 'world'; 
+-------------+------------+ 
| COLUMN_NAME | TABLE_NAME | 
+-------------+------------+ 
| *   | test_  | 
+-------------+------------+ 
1 row in set (0.00 sec) 
0
* is a wildcard that is used to denote 'ALL'. 

所以,围绕着它,当你射击一个查询,如选择* from table_name它给你所有的列。 虽然你可以创建一个名为*的列,但它根本不推荐,因为它可能会产生其他查询的问题(当你想选择所有的列时)

这是另一种解决方案,如果你想*你可以做以下列名:

SELECT column_name AS * FROM table_name