drmticpet66231422 2015-12-30 08:43
浏览 118
已采纳

无法将数据从android插入MySQL

Problem description

Data not able insert into MySQL but the value get displayed using `print_r($listItems).

I wanted to send arraylist(SearchResults) to MySQL from android to Php MySQL. And the issue I facing now is the data are not inserted into MySQL.

WorkDetails.java

  public void addWorkDetails(ArrayList<SearchResults> listItems)
    {
        JSONArray jsonArray = new JSONArray();
        try
        {
            for (SearchResults s : listItems)
            {
                JSONObject object= new JSONObject();
                object.put("project", s.getProject());
                String des=s.getDescription();
                String [] description=des.split(":");
                object.put("work_description", description[1]);
                Toast.makeText(getApplicationContext(), description[1],Toast.LENGTH_LONG).show();
                String per=s.getProgress();
                String [] progress=per.split(":");
                object.put("percentage", progress[1]);
                String in=s.getTimeIn();
                String []IN=in.split(":");
                object.put("timeIn", IN[1]);
                String out=s.getTimeOut();
                String []OUT=out.split(":");
                object.put("timeOut",OUT[1]);
                jsonArray.put(object);
            }
        }catch(JSONException e)
        {
            e.printStackTrace();
        }

        AddWorkDetails ru = new AddWorkDetails(jsonArray);
        ru.execute();
    }

    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();
        }
    }

Php

<?php
 if($_SERVER['REQUEST_METHOD']=='POST'){
    $mysqli = new mysqli("127.0.0.1:3307", "root", "", "androiddb");
    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) 
    VALUES 
    (?, ?, ?, ?, ?)"; 

    print_r($listItems);

    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']);
            if (!$stmt->execute()) {
                echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
            }
        } 
    }
    $mysqli->close();
}
?>

Output

enter image description here

Value get displayed using

print_r($listItems);

Config

 public static final String ADD_WORKDETAILS="http://192.168.107.115:80/Android/CRUD/addWorkDetails.php";
  • 写回答

3条回答 默认 最新

  • dongtan1845 2015-12-30 08:54
    关注

    You have

    $sql="INSERT INTO work_details 
    (project, work_description, percentage, timeIn, timeOut) 
    VALUES 
    (?, ?, ?, ?, ?)"; // 5 param
    

    But while binding

    $stmt->bind_param("ssssss", $item['project'], $item['work_description'], $item['percentage'], $item['timeIn'], $item['timeOut']); // 6 param
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 outlook无法配置成功
  • ¥15 Pwm双极模式H桥驱动控制电机
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换