我无法在Mysql中的另一个查询中运行查询。表消息。显示收件箱

时间:2013-01-02 06:38:38

标签: php mysql

我有一个表消息,我想显示最近的消息。 如果用户1已登录,我想这样做: 例如,如果用户1向用户2发送消息,然后用户2向用户1发送消息,我想向用户1显示最新消息。所以它将是用户2发送的那个。 我的桌子有:

id |  id_from|id_to|text 
1     1       2     abc     
2     2       1     dif      
3     3       1     jsd      

所以,我必须向用户1显示ids 2和3。

我试试这个: 非常感谢!

   $consulta=mysql_query("select * from messages where id_from='".$id."' or id_to='".$id."'  ");
while($filas=mysql_fetch_array($consulta)){
    $id=$filas['id'];
    $id_to=$filas['id_to'];
    $status=$filas['status'];
    $text=$filas['text'];
    $time=$filas['time'];
    echo "lo primero: ";

$consulta2=mysql_query("select * from messages where id_from='".$id."' or id_to='".$id."' ");
    while($filas2=mysql_fetch_array($consulta2)){
        echo "es ";
        $id2=$filas2['id'];
        $id_to2=$filas2['id_to'];
        $status2=$filas2['status'];
        $text2=$filas2['text'];
        $time2=$filas2['time'];
        echo "es ";
        echo $id2;
            if($id_from==$id_from2 and $id_to==$id_to2 and $id2>$id){ 
                $id=$id2;           
                echo "el mas grande ";
                echo $id;
            }
    }
    echo $id;
    echo " ";
    //Almaceno en un vector los mensajes a mostrar
    $result  = array ( "'".$id."'");

2 个答案:

答案 0 :(得分:0)

使用单个简单查询

SELECT * FROM mytable WHERE id_from != 1 AND id_to = 1

答案 1 :(得分:0)

我假设第一列 id 设置为自动增量。要显示id = $ userid的用户的最近活动,请使用

SELECT * 
FROM  `messages` 
WHERE  `id_from` =  '$userid' ||  `id_to` =  '$userid'
ORDER BY  `id` DESC 
LIMIT 1

通过此查询,我们将获得用户的最后一个活动。从结果行中,您可以检查活动是已发送消息还是已接收消息,并相应地显示文本。

如果您只是简单地显示最近使用的收件箱邮件

    SELECT * 
    FROM  `messages` 
    WHERE  `id_to` =  '$userid'
    ORDER BY  `id` DESC