Mysqli 是否支持查询中的 MAX?

Does Mysqli support MAX in a query?

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

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

但我收到此错误消息:

Notice: Undefined index: changedate in /home/jcslnl/domains/jcsl.nl/public_html/michael/paginas/home.php on line 22

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

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

聚合函数将在 mysql 中运行,与 sql 标准不同。要从 php 访问 MAX(changedate) 的值,您必须为其设置别名:像这样

    Select
        MAX(`changedate`) as cngdate
    FROM
        your_table

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

SELECT MAX(changedate) AS maxdate
FROM producten 

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

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

print_r($up)

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

 Select max(changedate) as maxdate 

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

在执行语句后添加$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;

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

Select
    MAX(changedate) as changedate
FROM
    producten   

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