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

助けてください?

テーブル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_USUARIO2番目のクエリには存在しません。

また、1回のクエリで両方のループを実行できるようです。両方のテーブルの完全な構造を確認する必要があります。

于 2013-01-24T18:59:22.527 に答える
0

2つのクエリを実行する代わりに、追加の条件付けを使用して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 に答える