我想抓住一行包含最近日期的表格。我正在考虑我的代码并看到其他解决方案,我认为它们不适应我的问题。 这是我的代码。
$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'];
请帮忙吗?
表MENSAJE:
答案 0 :(得分: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
答案 1 :(得分:1)
您需要使用别名。
SELECT max(FECHA_MENSAJE) AS FECHA_MENSAJE...
此外,您的第二个查询中不存在ID_USUARIO
。
您似乎可以通过单个查询完成两个循环。我们需要看到两个表的完整结构。
答案 2 :(得分: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