java - 将ArrayList从android发送到php MySQL

标签 java php android mysql arraylist

在表work_details中,我有7列(id、project、work_description、percentage、time_in、time_out、fk)。现在我想将 arraylistfk 保存到表中。

我尝试过编码,但我知道这不是正确的方法。

  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和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 人员,所以我写的内容可能存在错误。

编辑:这假设列表中的顺序始终相同。

关于java - 将ArrayList从android发送到php MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34507749/

相关文章:

JavaFX 使 cellFactory 变得通用

php - 尝试在 PHP 中连接到 MySQL 数据库时出错

MySQL查询中的PHP变量WHILE字符串中断

javascript - 对elFinder和CKeditor整合直接上传文件

java - 从 Android 模拟器连接到 LocalHost/10.0.2.2 超时

java - 检测触摸按压与长按与 move ?

java - 从 java 类调用 kotlin 函数会产生错误

android - layout_height 总是包裹内容

java - 如何在 Android Studio 中从 Activity 类外部调用/使用文件?

java - JTable AutoCreateRowSorter 将数字排序为字符串