Php 没有返回行时检索MySQL列名
想知道当查询结果不返回任何行时,是否有办法让MySQL返回列名?问题是我们的系统有时会有多个大型查询:Php 没有返回行时检索MySQL列名,php,mysql,Php,Mysql,想知道当查询结果不返回任何行时,是否有办法让MySQL返回列名?问题是我们的系统有时会有多个大型查询: SELECT * FROM table SELECT table1.*, table2.field1, table2.field2 SELECT table1.field1 AS f1, SUM(table2.field1) AS f2 因此,当返回的结果为空时,获取列名的唯一方法是解析查询,并尝试在information_schema表上运行查询。这是可能的,但相当复杂。有什么想法吗?
SELECT * FROM table
SELECT table1.*, table2.field1, table2.field2
SELECT table1.field1 AS f1, SUM(table2.field1) AS f2
因此,当返回的结果为空时,获取列名的唯一方法是解析查询,并尝试在information_schema表上运行查询。这是可能的,但相当复杂。有什么想法吗?您可以使用的一种技术是在查询上创建一个视图,然后使用视图名称查询
信息\u schema
就是这样,
create view v_JustForColumns as
<your query here>;
select *
from information_schema.columns
where table_name = 'v_JustForColumns';
drop view v_JustForColumns;
创建视图v_JustForColumns作为
;
挑选*
从信息_schema.columns
其中表_name='v_JustForColumns';
下拉视图v_JustForColumns;
一些MySQL的PHP接口有一个结果集元数据函数,即使结果集没有行,也应该返回信息
- MySQLi有
- PDO有,但它被标记为“实验”,这可能只是意味着它没有在所有PDO驱动程序中得到很好的测试
- 试试下面的方法。这里用实际的模式名替换您的\u模式,用实际的表名替换您的\u表名:
select column_name from information_schema.columns
where not exists(select * from YOUR_SCHEMA.YOUR_TABLENAME)
and table_name='YOUR_TABLENAME';
您希望如何处理数据类型的差异?e、 g.你能预期收到“myDateColumn”而不是日期对象吗?@raina77ow:Reference不是这个问题的答案,因为这个问题是关于如何从查询中获取列名,而不是table@Rimas公平点,投票支持重新开放。