Отправить ArrayList из android в php MySQL

В таблице work_details меня есть 7 столбцов (id, project, work_description, percentage, time_in, time_out, fk) . Теперь я хочу сохранить arraylist и fk на столе.

Я попытался закодировать, но я знаю, что это не правильный путь.

  public void addWorkDetails(ArrayList<SearchResults> listItems, long id) { JSONObject object= new JSONObject(); for(int i=0;i<listItems.size();i++) { try { object.put("Count : "+String.valueOf(i + 1),listItems.get(i)); }catch(JSONException e) { e.printStackTrace(); } } class AddWorkDetails 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(); } @Override protected String doInBackground(String... params) { HashMap<String, String> data = new HashMap<String,String>(); // what should I put here ? RequestHandler rh=new RequestHandler(); String result = rh.sendPostRequest(Config.ADD_WORKDETAILS,data); return result; } } AddWorkDetails ru = new AddWorkDetails(); ru.execute(listItems,id); } 

Php

 <?php if($_SERVER['REQUEST_METHOD']=='POST'){ $list[]=$_POST['listItems']; $id=$_POST['id']; foreach($list as $value){ $value=mysqli_real_escape_string($val); $sql="INSERT INTO work_details (project, work_description, percentage, timeIn, timeOut, id) VALUES ('$val', '$id')"; //Importing our db connection script require_once('dbConnect.php'); //Executing query to database if(mysqli_query($con,$sql)){ echo ' Added Successfully'; }else{ echo 'Could Not Add Data'; } //Closing the database mysqli_close($con); } ?> 

Отмечено, что listItems содержит project,work_description,percentage,time_in and time_out .

Ваш SQL-запрос неверен:

 $sql="INSERT INTO work_details (project, work_description, percentage, timeIn, timeOut, id) VALUES ('$val', '$id')"; 

У вас есть 6 столбцов для установки и укажите только 2 значения.

Вместо того, чтобы перебирать более $list и выполнять запрос для каждого значения, вы должны скорее построить запрос во время итерации и выполнить его только один раз в конце, когда он будет завершен. Пример:

 foreach (...) { $sql = $sql . "'$val', "; ... } $sql = "INSERT INTO work_details (project, work_description, percentage, timeIn, timeOut, id) VALUES (" . $sql . "'$id')"; 

Это просто идея .. Я не парень PHP, поэтому есть ошибки в том, что я написал.

EDIT : Это предполагает, что порядок всегда один и тот же в списке.