【问题标题】:How can we search for column '*' in a database in php? [closed]我们如何在 php 的数据库中搜索列“*”? [关闭]
【发布时间】:2014-02-20 20:56:57
【问题描述】:

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

【问题讨论】:

  • 我可以看看你的表结构吗?
  • 当我们执行SELECT * FROM... 时,它的意思是“从表中选择所有列”。
  • 列名"*" 是什么意思?您有名称为 "*" 的列吗?
  • 我认为 OP 有 * 作为列名
  • 将列称为“*”非常愚蠢,但这是可能的

标签: php mysql database


【解决方案1】:

如果您想使用 * 作为列名,请用反引号 (`) 将其括起来

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

这是一个例子Fiddle

【讨论】:

  • +1 用于给出正确答案,尽管我仍然不明白为什么有人会认为这样的数据库设置是个好主意。
【解决方案2】:
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)

【讨论】:

    【解决方案3】:
    * is a wildcard that is used to denote 'ALL'. 
    

    因此,当您触发 select * from table_name 之类的查询时,它会为您提供所有列。 虽然您可以创建一个名为 * 的列,但根本不推荐使用它,因为它可能会导致其他查询出现问题(当您想要选择所有列时)

    如果您想要 * 作为您的列名,这是另一种解决方案,您可以执行以下操作:

    SELECT column_name AS * FROM table_name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 2013-06-05
      • 2014-06-18
      • 1970-01-01
      • 2018-03-10
      • 2020-04-26
      • 1970-01-01
      相关资源
      最近更新 更多