php - 如何使用 json 选择

标签 php mysql select

<?php

    require("config.inc.php");

    if (!empty($_POST)) {
    $query = "SELECT * FROM chatt
              WHERE 
       fromm= :username  AND chatt.too IN
       (SELECT friend2 FROM friends where friend1=:username)
       ";

        $query_params = array(
            ':username' => $_POST['username'],

        );


    try {
        $stmt   = $db->prepare($query);
        $result = $stmt->execute($query_params);
    }
    catch (PDOException $ex) {
        $response["success"] = 0;
        $response["message"] = "Database Error!";
        die(json_encode($response));
    }
    $rows = $stmt->fetchAll();


    if ($rows) {
        $response["success"] = 1;
        $response["message"] = "Post Available!";
        $response["posts"]   = array();

        foreach ($rows as $row) {
            $post             = array();


       $post["Message"]  = $row["message"];
            array_push($response["posts"], $post);
        }

        echo json_encode($response);


    } else {
        $response["success"] = 0;
        $response["message"] = "No Post Available!";
        die(json_encode($response));
    }

    } else {
    ?>
            <h1>Login</h1> 
            <form action="selectchat.php" method="post"> 
                Username:<br /> 
                <input type="text" name="username" placeholder="username" /> 
                <br /><br /> 


                <input type="submit" value="Login" /> 
            </form> 
            <a href="register.php">Register</a>
        <?php
    }

    ?>

上面的代码给了我这个结果:

{"success":1,"message":"Post Available!",
 "posts":[
  {"to":"ezenwa","Message":"this is me yes","time":"2015-02-08 23:47:31"},
  {"to":"mark","Message":"ok i can see","time":"2015-02-08 23:47:31"},
  {"to":"ezenwa","Message":"seems good","time":"2015-02-12 17:44:10"},
  {"to":"john","Message":"j nman ","time":"2015-02-13 14:42:16"},
  {"to":"david","Message":"j nman ","time":"2015-02-13 14:43:28"},
  {"to":"john","Message":"this is cool","time":"2015-02-13 14:58:28"}
]}

但我希望它只显示用户与其列表中的每个人之间的最后一条消息,例如......

编辑:更新json格式。

{"success":1,
 "message":"Post Available!",
 "posts":[
  {"to":"mark","Message":"ok i can see","time":"2015-02-08 23:47:31"},
  {"to":"ezenwa","Message":"seems good","time":"2015-02-12 17:44:10"},
  {"to":"david","Message":"j nman ","time":"2015-02-13 14:43:28"},
  {"to":"john","Message":"this is cool","time":"2015-02-13 14:58:28"}
]}

如果我做错了请告诉我..或者如果你有更好的方法请帮助我

最佳答案

如果我没有错误地理解您的要求,您只是想从数据库获取最新消息。

您可以按时间戳排序数据库聊天表中的任何列,按聊天表的时间戳来自数据库的行。

例如

从 chatt 中选择 *,其中 .... 按时间戳 DESC 排序

如果我仍然无法满足您的要求,请告诉我。

关于php - 如何使用 json 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28543187/

相关文章:

Php Curl 实时服务器不工作

mysql - 对具有多个 ID 的行求和

php - 更新 MAMP 后 mySQL 不再工作

jquery - 使用 jQuery 从所选选项中选择前一个元素

mysql - 在 mysql 中使用 GROUP_CONCAT 选择查询

PHP/MySQL : why my query doesn't work?

php - 为什么 PHP preg_* 函数需要正则表达式分隔符?

php - 对于大多数响应,我应该检查 'is not modified' 吗?

javascript - 设置测验模块的时间限制

mysql - 如何在mysql查询中进行NOT NULL检查