2012-07-16 49 views
1

的我正在這下面的代碼,但它返回一個錯誤:"undefined index: value"沒能獲得價值進行查詢

$two_tier= mysql_query(" 
    SELECT Count(1) 
    FROM(
     SELECT `login_id` 
     FROM `data` 
     WHERE Year(`start_at`) = Year(Date_sub(Now(), INTERVAL 1 month)) 
     AND Month(`start_at`) = Month(Date_sub(Now(), INTERVAL 1 month)) 
     AND end_at > Date_add(start_at, INTERVAL 5 minute) 
     GROUP BY `login_id` 
     HAVING Count(`login_id`) > 1 
    ) AS Value 
"); 

$two_cnt = mysql_fetch_assoc($two_tier); 
echo $two_cnt['value']; 

我試圖讓「價值」。請幫忙。

+6

錯誤是相當自我解釋。返回的關聯數組沒有鍵'值'。做一個'var_dump'來調試。 – xbonez 2012-07-16 19:43:05

+0

@xbonez值僅是我使用來獲取查詢 – user1424394 2012-07-16 19:45:59

+0

@BarbiePylon值的結果的變量只是我使用來獲取查詢 – user1424394 2012-07-16 19:46:24

回答

5
SELECT Count(1) as my_value 
FROM (SELECT `login_id` 
     FROM `data` 
     WHERE (Year(`start_at`) = Year(Date_sub(Now(), INTERVAL 1 month)) 
       AND Month(`start_at`) = Month(Date_sub(Now(), INTERVAL 1 month) 
             )) 
       AND (end_at > Date_add(start_at, INTERVAL 5 minute)) 
     GROUP BY `login_id` 
     HAVING Count(`login_id`) > 1) AS Value 


$two_cnt = mysql_fetch_assoc($two_tier); 
echo $two_cnt['my_value']; 

您選擇從作爲價值,而是首先選擇的結果是不是該值,則需要多一個AS

+0

非常感謝多位老兄...知道了。一個問題,雖然....你可以確定我在最後使用了一個AS值,所以現在如果我刪除它,它會使結果的差異? – user1424394 2012-07-16 19:54:36

+0

我相信MySQL,你需要一個子查詢的別名。 – 2012-07-16 19:57:15

+0

是的,當您在FROM中使用子查詢時,您需要別名。 – 2012-07-16 19:57:42

2

由於SELECT聲明SELECT Count(1)外觀最大的價值,所以你實際上是取Count(1)Count(1),而不是value。要獲取它的價值,你需要這樣做:

SELECT Count(1) AS value .... 

然後代碼將正常工作。所以,最後的聲明將是:

$two_tier= mysql_query(" 
    SELECT Count(1) AS value 
    FROM(
     SELECT `login_id` 
     FROM `data` 
     WHERE Year(`start_at`) = Year(Date_sub(Now(), INTERVAL 1 month)) 
     AND Month(`start_at`) = Month(Date_sub(Now(), INTERVAL 1 month)) 
     AND end_at > Date_add(start_at, INTERVAL 5 minute) 
     GROUP BY `login_id` 
     HAVING Count(`login_id`) > 1 
    ) AS Value 
"); 
+0

OP did do that ,它是FROM()語句中的一個子查詢。 – 2012-07-16 19:48:15

+0

@AlexBelanger其實,我不這麼認爲。檢查縮進(或自己的括號順序)。 – hjpotter92 2012-07-16 19:49:34

+0

@AlexBelanger,不,OP是別名臨時表 – Adi 2012-07-16 19:49:53