Mysqli在查询中是否支持MAX?

时间:2015-01-04 14:28:19

标签: php mysqli

我想从表中获取最后一个日期。所以我可以显示最后添加或更改的项目:

$qry = " 
        Select
            MAX(changedate)
        FROM
            producten   
        ";
    $stmt = $connection->prepare($qry);             
    $stmt->error;
    $stmt->execute();
    $result = $stmt->get_result();
    $up = $result->fetch_assoc();
    $stmt->close();

$main .='Last update '.$up['changedate'];

但我收到此错误消息:

  

注意:未定义的索引:在第22行/home/jcslnl/domains/jcsl.nl/public_html/michael/paginas/home.php中更改

这是因为MAX不再受支持吗?或者我应该继续搜索错误吗?

也可能是我在表中做错了,这是我第一次使用时间戳i.s.o. unix时间戳。

6 个答案:

答案 0 :(得分:2)

聚合函数将在mysql中工作,与sql标准不同。要从php访问MAX(已更改)的值,您必须使用别名:像这样

    Select
        MAX(`changedate`) as cngdate
    FROM
        your_table

答案 1 :(得分:1)

你的问题的答案是 是的,mysqli支持MAX 。但是,您需要为列添加别名,因为您实际上并未选择 changedate,而是选择changedate值的函数的结果。在这种情况下,SELECT MAX(changedate) as changedate会为您提供所需的结果。

您还可以使用var_dump($up);在结果中更清楚地看到这一点。

答案 2 :(得分:1)

的print_r($向上)

为什么猜测它被命名为不同的东西。所以只需在查询中命名

 Select max(changedate) as maxdate 

然后在输出中使用$ up ['maxdate']。

答案 3 :(得分:1)

在execute语句后添加$stmt->bind_result($changedate);。即。

$qry = " 
        Select
            MAX(changedate)
        FROM
            producten   
        ";
    $stmt = $connection->prepare($qry);             
    $stmt->error;
    $stmt->execute();
    $stmt->bind_result($changedate);
    $stmt->close();

$main .='Last update '.$changedate;

答案 4 :(得分:1)

列结果实际上是MAX(changedate),即$up['MAX(changedate)'] 但是为了使其更具可读性,您应该使用别名进行选择

Select
    MAX(changedate) as changedate
FROM
    producten   

并使用相同的$up['changedate']

答案 5 :(得分:0)

您必须为MAX函数的结果添加别名

SELECT MAX(changedate) AS maxdate
FROM producten