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'];

我试图获得“价值”。一点帮助,请。

4

2 回答 2

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'];

您选择 FROM 作为值,但第一次选择的结果不在该值中,您还需要一个 AS

于 2012-07-16T19:46:25.383 回答
3

SELECT由于语句中最外部的值是SELECT Count(1),所以您实际上是在获取Count(1)asCount(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
");
于 2012-07-16T19:47:02.927 回答