php - 在 MySQL php 中获取最小 ID 和最大 ID 值

标签 php android mysql json

我想知道如何从 MySQL php 到 android 获取具有最小 id 的 timeIn 和具有最大 id 的 timeOut

这是表 work_Details(id,project,percentage,timeIn,timeOut,twd)。现在我想检索 timeIn : 12:26:00timeOut 11:26:00

enter image description here

  public void RetrieveTotalHours( final String ID)  // Assume ID is 69
    {
        class GetHours extends AsyncTask<Void,Void,String> {
            ProgressDialog loading;
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                loading = ProgressDialog.show(getActivity(),"Fetching...","Wait...",false,false);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                loading.dismiss();
                showHours(s);
            }

            @Override
            protected String doInBackground(Void... params) {
                RequestHandler rh = new RequestHandler();
                String s = rh.sendGetRequestParam(Configs.RETRIEVE_HOURS,ID);
                return s;
            }
        }
        GetHours ge = new GetHours();
        ge.execute();

    }
    private void showHours(String json) {
        try {
            JSONArray array=new JSONArray(json);
            JSONObject jsonObject = array.getJSONObject(array.length()-1);
            String MiNtimeIn = jsonObject.optString(Configs.TAG_IN);
            String MaXtimeOut=jsonObject.optString(Configs.TAG_OUT);
            Log.e("A",MiNtimeIn);
            Log.e("S", MaXtimeOut);
            //total.setText(MiNtimeIn);

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

php

<?php
  define('HOST','127.0.0.1:3307');
  define('USER','root');
  define('PASS','');
  define('DB','androiddb');

  $con = mysqli_connect(HOST,USER,PASS,DB) or die('unable to connect');

  $twd= $_GET['id'];

 $sql = "select timeIn, timeOut from work_details WHERE twd = '".$twd."' AND id IN
 (SELECT MIN(id) FROM work_details WHERE twd ='".$twd."' UNION SELECT MAX(id) FROM work_details WHERE twd='".$twd."')";


  $res = mysqli_query($con,$sql);

  $result=array();

  while($row=mysqli_fetch_array($res)){
      array_push($result,array('timeIn'=>$row[0],'timeOut'=>$row[1]));
  }

 echo json_encode($result);

mysqli_close($con);

?>

错误的输出

01-12 12:43:41.540  22692-22692/com.example.project.myapplication E/A﹕ 20:26:00
01-12 12:43:41.540  22692-22692/com.example.project.myapplication E/S﹕ 11:26:00

它检索具有最大 id 的 timeIn 和 timeOut...

最佳答案

retrieves the timeIn and timeOut which has the max id...

这样做是为了从第一个 JSONObject 获取 MiNtimeIn 并从第二个 JSONObject 获取 MaXtimeOut:

String MiNtimeIn,MaXtimeOut;
JSONArray array=new JSONArray(json);
if(array.length()<2){
  JSONObject jsonObject = array.getJSONObject(0);
  MiNtimeIn = jsonObject.optString(Configs.TAG_IN);
  MaXtimeOut=jsonObject.optString(Configs.TAG_OUT);
}else{
  // get First Object from JSONArray
   JSONObject oneObject = array.getJSONObject(0);
  MiNtimeIn = oneObject.optString(Configs.TAG_IN); // get min from first row
  // get Second Object from JSONArray
   JSONObject twoObject = array.getJSONObject(array.length()-1);
   MaXtimeOut = twoObject.optString(Configs.TAG_OUT); // get min from second row
}

关于php - 在 MySQL php 中获取最小 ID 和最大 ID 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34735760/

相关文章:

Android:如何检测音频何时停止播放

android - 编辑 android VideoView 帧

android - 在 Android 应用程序中使用 jqMath

mysql - 使用 EXISTS 插入 MySQL 5.x

php - 必须捕获所有数量最多的产品

mysql - #1044 - 拒绝用户 'faiskap' @'localhost' 访问数据库 'information_schema'

php - stdClass 和类型提示

php - Laravel 5. Debug模式

php - 如果过滤器输入为空,则重置结果

php - MYSQL : How to insert multiple value in a single column using array and only if not exist