我很難得到一個PDO數據庫類,我正在寫關於GROUP BY子句的查詢。PDO GROUP BY不返回結果
例如,我想檢索數據庫中的文章列表,但文章使用多對多關係鏈接到標籤。
即文章>文章標籤鏈接<標籤
我試圖運行查詢很簡單:
SELECT * FROM articles, article-tag-link, tags WHERE articles.articleID = article-tag-link.articleID AND tags.tagID = article-tag-link.tagID GROUP BY articles.articleID LIMIT 3;
我用準備好的語句來執行與PDO查詢,並且我知道沒有GROUP BY的簡單查詢完美地工作,因爲它在其他地方使用時沒有問題。
所以,當它涉及到執行查詢,我做:
$result = $stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
這將返回我想要的結果,但他們沒有正確分組。即一個可能有3個標籤的文章將出現三次(因爲在技術上有三個滿足查詢的記錄 - 不包括GROUP BY)。所以就好像GROUP BY被忽略了一樣。
我遇到
$results = $stmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
$results = array_map('reset', $results);
但其行爲就像奇怪。這將只返回一個結果(它不會返回第一篇文章三次 - 每個應用的標籤一次),但它會停在那一個結果 - 它不會繼續讀取兩個結果。
任何人都可以解釋如何讓它獲取滿足查詢的三個唯一記錄嗎?
我設法找到解決自己和會我會爲其他可能犯過同樣錯誤的人寫信。正如我寫過自己的PDO封裝器一樣,我將所有的值傳遞給通過方法進行查詢。該方法負責準備聲明並約束所有內容。我正在做的是意外地試圖綁定導致問題的GROUP BY值。只要記住不要綁定這個,並將GROUP BY作爲格式化查詢的常規部分。 – Amo