2014-11-23 55 views
1

我正在編寫一個軟件,它可以生成用戶定義的原始SQL查詢執行中的pdf報告。 pdf包含一個包含SQL結果行的簡單表。我想添加一個表頭,其中包含與SQL結果一起檢索的列名稱。 SQL中的列標題可能有不同的結構,e.g:在Doctrine/PDO中,如何獲取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,需要一些數據庫安全工作(我可以處理),但它是一個工作候選人。

您認爲如何?

+0

其通常的情況下,你不知道提交的名稱是 – 2014-11-23 20:42:42

+0

創建一個視圖 - 耶穌不能你只是鍵入他們的數組,或其他var?數據庫結構不會經常變化 – 2014-11-23 20:56:45

+0

是的,一種「觀點」方法剛剛來到我的頭上,我編輯了這個問題。 不,我不能放列名稱,因爲它是定義SQL的用戶。他可以根據需要命名這些列。 – lilly 2014-11-23 20:59:26

回答

0

它可能不是完美的解決方案,但我會採用問題中提到的方法。我建立了MySQL view。這允許我有一個可查詢的db對象,並且具有我想要的精確列名稱。

describe nameOfViewYouJustCreated; 

給我正是我需要的東西。 之後視圖被丟棄。