java - 无法将数据从android插入到MySQL

标签 java php android mysql arraylist

问题描述

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

我想将 arraylist(SearchResults) 发送到 MySQL 从 android 到 Php MySQL。我现在面临的问题是数据没有插入到 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();
}
?>

输出

enter image description here

使用

显示值
print_r($listItems);

配置

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

最佳答案

你有

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

但同时绑定(bind)

$stmt->bind_param("ssssss", $item['project'], $item['work_description'], $item['percentage'], $item['timeIn'], $item['timeOut']); // 6 param

关于java - 无法将数据从android插入到MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34525922/

相关文章:

php - 尝试将数据发送到 GCM 时出现 MissingRegistraton 错误

java - 如何从头到尾遍历 TreeMap<Integer, T>

php - HTML 选择选项设置选中的默认回显获取值 php

java - IntelliJ 插件中的持久存储

php - 从等于行名的表中选择 id

php - 拉拉维尔。如何根据 Content-Type 定义路由

android - 如何在 Nativescript 中使用 SDK Firebase (Android)

android:name ="com.google.android.wearable.watchface.preview"表盘无法识别

java - 通过 SharedPreference 传递 EditText 内容

java - Apache Camel,客户端证书