在Doctrine / PDO中,如何获取sql查询列名

时间:2014-11-23 20:39:22

标签: php mysql symfony pdo doctrine-orm

我正在编写一个软件,用于根据原始用户定义的SQL查询执行生成pdf报告。 pdf包含一个包含SQL结果行的行的简单表。我想添加一个表头,其中包含检索的列名以及SQL结果。 SQL中的列标题可能有各种结构,例如:

a) select * from users;
b) select name, surname, email from users;
c) select name as UserName, surname as UserSurname, email as UserEmail from users;

到目前为止,我将SQL结果作为关联数组获取,获取第一行的键并将它们视为列名。 它仅在结果集中至少有1个结果时起作用,因此这种方法存在严重缺陷。

  • 我可以使用“无结果”标签生成pdf。
  • 我可以在命名列的SQL查询上运行正则表达式并执行describe table x,但这很荒谬。
  • 我也有更多荒谬的想法,但那不是那样。

有没有人有任何想法解决这个问题? 我在MySQL上使用Doctrine,但是简单的PDO方法和Doctrine方法一样好。

修改

发布此问题后,我想到了我可以从我的SQL查询中生成一个视图,然后运行SHOW COLUMNS FROM randomViewName;并立即删除视图。 它很hacky,需要一些数据库安全工作(我可以处理),但它是一个有效的候选人。

您怎么看?

1 个答案:

答案 0 :(得分:0)

这可能不是完美的解决方案,但我同意问题中提到的方法。

我创建了一个MySQL view。这允许我有一个可查询的db对象,并且具有我想要的精确列名。

describe nameOfViewYouJustCreated;

完全符合我的需要。 视图随后被删除。