Java 尝试将ArrayList从android发送到php MySQL时出错

Java 尝试将ArrayList从android发送到php MySQL时出错,java,php,android,mysql,arraylist,Java,Php,Android,Mysql,Arraylist,我不熟悉php,现在正试图将arrayList数据从android发送到phpMySQL 在表工作详细信息中,我有7列(id、项目、工作描述、百分比、时间、时间、fk)。现在我想将arraylist和fk保存到表中 我尝试过编码,但我知道这不是正确的方法 public void addWorkDetails(ArrayList<SearchResults> listItems, final long id) // listItems have project,workDescript

我不熟悉
php
,现在正试图将
arrayList
数据从android发送到
phpMySQL

在表
工作详细信息中,我有7列
(id、项目、工作描述、百分比、时间、时间、fk)
。现在我想将
arraylist
fk
保存到表中

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

public void addWorkDetails(ArrayList<SearchResults> listItems, final long id) // listItems have project,workDescription,percentage,timeIn,timeOut
    {
        final 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>();
                data.put("listItems",String.valueOf(object)); // not sure 
                data.put(Config.KEY_TWF,String.valueOf(id));
                RequestHandler rh=new RequestHandler();
                String result = rh.sendPostRequest(Config.ADD_WORKDETAILS,data);
                return  result;
            }
        }

        AddWorkDetails ru = new AddWorkDetails();
        ru.execute("listItems",String.valueOf(id)); // not sure
    }
public void addWorkDetails(ArrayList listItems,最终长id)//listItems具有项目、工作描述、百分比、timeIn、超时
{
最终的JSONObject对象=新的JSONObject();

对于(int i=0;i异步任务:

class AddWorkDetails extends AsyncTask<String, Void, String> {
    ProgressDialog loading;


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

    @Override
    protected String doInBackground(String... params) {
        HashMap<String, String> data = new HashMap<String,String>();
        data.put("listItems",jsonArray.toString());
        RequestHandler rh=new RequestHandler();
        String result = rh.sendPostRequest(Config.ADD_WORKDETAILS,data);
        return  result;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        loading.dismiss();
        Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
    }
}
public void addWorkDetails(ArrayList<SearchResults> listItems, final long id)
{
    JSONArray jsonArray = new JSONArray();
    try
    {
        for (SearchResults s : listItems)
        {
            JSONObject object= new JSONObject();
            object.put("project", s.getProject());
            object.put("work_description", s.getDescription());
            object.put("percentage", s.getProgress());
            object.put("timeIn", s.getTimeIn());
            object.put("timeOut", s.getTimeOut());
            object.put("twf", String.valueOf(id));
            jsonArray.put(object);
        }
    }catch(JSONException e)
    {
        e.printStackTrace();
    }

    AddWorkDetails ru = new AddWorkDetails(jsonArray);
    ru.execute(); 
}
class AddWorkDetails扩展了异步任务{
对话加载;
JSONArray JSONArray;
添加工作细节(JSONArray JSONArray){
this.jsonArray=jsonArray
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
loading=ProgressDialog.show(WorkDetailsTable.this,“请稍候”,null,true,true);
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
HashMap数据=新的HashMap();
data.put(“listItems”,jsonArray.toString());
RequestHandler rh=新的RequestHandler();
String result=rh.sendPostRequest(Config.ADD\u WORKDETAILS,data);
返回结果;
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
loading.dispose();
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG.show();
}
}
功能:

class AddWorkDetails extends AsyncTask<String, Void, String> {
    ProgressDialog loading;


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

    @Override
    protected String doInBackground(String... params) {
        HashMap<String, String> data = new HashMap<String,String>();
        data.put("listItems",jsonArray.toString());
        RequestHandler rh=new RequestHandler();
        String result = rh.sendPostRequest(Config.ADD_WORKDETAILS,data);
        return  result;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        loading.dismiss();
        Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
    }
}
public void addWorkDetails(ArrayList<SearchResults> listItems, final long id)
{
    JSONArray jsonArray = new JSONArray();
    try
    {
        for (SearchResults s : listItems)
        {
            JSONObject object= new JSONObject();
            object.put("project", s.getProject());
            object.put("work_description", s.getDescription());
            object.put("percentage", s.getProgress());
            object.put("timeIn", s.getTimeIn());
            object.put("timeOut", s.getTimeOut());
            object.put("twf", String.valueOf(id));
            jsonArray.put(object);
        }
    }catch(JSONException e)
    {
        e.printStackTrace();
    }

    AddWorkDetails ru = new AddWorkDetails(jsonArray);
    ru.execute(); 
}
public void addWorkDetails(ArrayList listItems,最终长id)
{
JSONArray JSONArray=新的JSONArray();
尝试
{
用于(搜索结果:列表项)
{
JSONObject对象=新的JSONObject();
put(“project”,s.getProject());
put(“工作描述”,s.getDescription());
put(“百分比”,s.getProgress());
put(“timeIn”,s.getTimeIn());
put(“timeOut”,s.getTimeOut());
put(“twf”,String.valueOf(id));
jsonArray.put(对象);
}
}捕获(JSONException e)
{
e、 printStackTrace();
}
AddWorkDetails ru=新的AddWorkDetails(jsonArray);
ru.execute();
}
PHP脚本

<?php
 if($_SERVER['REQUEST_METHOD']=='POST'){
    $mysqli = new mysqli("localhost", "user", "password", "database");
    if ($mysqli->connect_errno) {
        echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }

    $listItems = json_decode($_POST['listItems'], true); 
    $sql="INSERT INTO work_details 
    (project, work_description, percentage, timeIn, timeOut, twf) 
    VALUES 
    (?, ?, ?, ?, ?, ?)"; 

    if (!($stmt = $mysqli->prepare($sql))) {
         echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
         foreach($listItems as $item){ 
            $stmt->bind_param("ssssss", $item['project'], $item['work_description'], $item['percentage'], $item['timeIn'], $item['timeOut'], $item['twf']);
            if (!$stmt->execute()) {
                echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
            }
        } 
    }
    $mysqli->close();
}
?>


Dupe:@johncode谢谢。如果您能给我发送有关如何将
arrayList
数据从
android
发送到
php
MySQL
的链接,那就更好了。如何将
列表项
id
发送到一个表中?可能吗?谢谢您的回答。我能在之后更改“val”和“id”的位置吗de>id
在表格的最后一列中。我只能更改此行
$sql=“插入到工作中”\u详细信息(
val
id
)值('$id','$val')”;
?它会造成任何影响吗?
分析错误:语法错误,意外'),应为'(“在C:\xampp\htdocs\Android\CRUD\addWorkDetails.php的第6行
中,
函数
很好,因为
土司
显示所有内容。问题是php..如何登录?