0

我正在寻找包含最新日期的表格的一行。我正在仔细考虑我的代码并查看我认为它们不适合我的问题的其他解决方案。这是我的代码。

$result = mysql_query("SELECT * FROM tema")
or die(mysql_error());

while($row = mysql_fetch_array( $result )){
   $id_tema= $row['ID_TEMA'];
    $result_info_mensajes = mysql_query("SELECT max(FECHA_MENSAJE) FROM mensaje WHERE ID_TEMA=$id_tema")
        or die(mysql_error());
    $row_mensaje = mysql_fetch_array($result_info_mensajes);
    if($row_mensaje){
       $fecha_ultimo = $row_mensaje['FECHA_MENSAJE'];
       $usuario_ultimo = $row_mensaje['ID_USUARIO'];
    }
}

这就是我需要的,包含最高日期的行收集用户和日期。

这是错误:

Notice: Undefined index: FECHA_MENSAJE in C:\xampp\htdocs\proyecto_foro\pagina_principal.php on line 64

在这一行:

$fecha_ultimo = $row_mensaje['FECHA_MENSAJE'];

请帮忙?

表门萨杰: 在此处输入图像描述

4

3 回答 3

2

当您执行时SELECT max(FECHA_MENSAJE) FROM mensaje WHERE ID_TEMA=$id_tema,MySQL 将返回带有列名的行max(FECHA_MENSAJE)。您需要使用以下名称获取它:

$fecha_ultimo = $row_mensaje['max(FECHA_MENSAJE)'];

或别名列:

SELECT max(FECHA_MENSAJE) as FECHA_MENSAJE FROM mensaje WHERE ID_TEMA=$id_tema

更新:

如果您需要其他数据而不仅仅是max(FECHA_MENSAJE),最好使用ORDER BY

SELECT FECHA_MENSAJE, ID_USUARIO FROM mensaje WHERE ID_TEMA=$id_tema ORDER BY FECHA_MENSAJE DESC LIMIT 1
于 2013-01-24T19:00:28.620 回答
1

您需要使用别名。

SELECT max(FECHA_MENSAJE) AS FECHA_MENSAJE...

此外,ID_USUARIO在您的第二个查询中不存在。

您似乎也可以通过单个查询完成两个循环。我们需要查看两个表的完整结构。

于 2013-01-24T18:59:22.527 回答
0

而不是运行两个查询,我会推荐单个查询,这将节省您在 php 中使用循环的额外条件。

SELECT 
    t.*,
    max(m.FECHA_MENSAJE) as Value
FROM tema as t
LEFT JOIN mensaje as m ON ID_TEMA = t.ID_TEMA
GROUP BY ID_TEMA
于 2013-01-24T19:18:20.793 回答