2016-01-04 4 views
0

У меня есть таблица Info как изображение нижеКак я могу вернуть значение из php в java?

enter image description here

Идентификатор устанавливается на автоприращение. Когда вызывается addInformation, он будет вставлять данные в Information.

addInformation(name, weather, date2, status, first1[1], last1[1]); 

функция AddInformation

public void addInformation(final String name, final String weather, final String date2, final String status, final String timeIn, final String timeOut) { 
     class AddInfo extends AsyncTask<String, Void, String> { 
      ProgressDialog loading; 

      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       loading = ProgressDialog.show(WorkDetailsTable.this, "Please Wait", null, true, true); 
      } 

      @Override 
      protected void onPostExecute(String s) { 
       super.onPostExecute(s); 
       loading.dismiss(); 
       Toast.makeText(getApplicationContext(),s, Toast.LENGTH_LONG).show(); 
       //addWorkForce(Sub, NoP, NoH, Long.parseLong(s)); 
       // addWorkDetails(results, Long.parseLong(s)); 
      } 

      @Override 
      protected String doInBackground(String... params) { 

       HashMap<String, String> data = new HashMap<String, String>(); 
       data.put(Config.KEY_USER_NAME, name); 
       data.put(Config.KEY_WEATHER, weather); 
       data.put(Config.KEY_DATE, date2); 
       data.put(Config.KEY_STATUS, status); 
       data.put(Config.KEY_TIMEIN, timeIn); 
       data.put(Config.KEY_TIMEOUT, timeOut); 
       RequestHandler rh = new RequestHandler(); 
       String result = rh.sendPostRequest(Config.ADD_INFORMATION, data); 
       String response=? // get last Id from php 
       return result; 
      } 
     } 

     AddInfo ru = new AddInfo(); 
     ru.execute(name, weather, date2, status, timeIn, timeOut); 
    } 

Я новичок в PHP, и теперь пытается получить lastID из таблицы Info и возвращает значение для Android. Но я получаю неопределенный индекс.

<?php 

    class AddInformation{ 


     function response(){ 
      /** @var mysqli $con */ 
      require_once('dbConnect.php'); //$con = new mysqli('127.0.0.1', 'root', '', 'so'); 
      $name = $con->real_escape_string($_POST['name']); 
      $weather = $con->real_escape_string($_POST['weather']); 
      $date = $con->real_escape_string($_POST['date']); 
      $status = $con->real_escape_string($_POST['status']); 
      $timein = $con->real_escape_string($_POST['timeIn']); 
      $timeout = $con->real_escape_string($_POST['timeOut']); 
      $con->query("INSERT INTO information (name, weather, date, status, time_in, time_out) VALUES ('$name', '$weather', '$date', $status', '$timeIn', '$timeOut')"); 
      echo $con->insert_id; 
     } 
    } 

    $ai = new AddInformation(); 
    $ai->response(); 
?> 
  1. Как вернуть последний идентификатор из PHP (вставить LastId) в ответ (Java)/
  2. Как решить неопределенный индекс в PHP?

Может кто-нибудь мне помочь? Оценил.

+0

Вы должны использовать подготовленные операторы MySQLi (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php), поскольку вы используете MySQLi. – Script47

+0

@ Script47 Он может вернуть значение java? –

ответ

0

Я бы начал с того, что не работал так сильно, использую PDO и подготовленные операторы, а не mysqli и самостоятельно дезинформируя данные.

Прошло некоторое время, так как я использовал mysqli, но $ con> insert_id должен работать, если нет ошибки.

Вложилась ли вставка?

Сделайте это.

if (!$con->query("INSERT INTO information (name, weather, date, status, time_in, time_out) VALUES ('$name', '$weather', '$date', $status', '$timeIn', '$timeOut')")) { 
    printf("Error message: %s\n", $con->error); 
    exit; 
} 
return $con->insert_id; 

Тогда в вашем исполняемом коде.

header('Content-Type: application/json');  
echo json_encode($ai->response()); 

Теперь вы возвращаете идентификатор вставки через веб-службу на Java.

Затем в вашем Java расшифруйте ответ json.

Если вы получаете неопределенный вызов insert_id, ваша вставка не работает правильно.

Смежные вопросы