无法将数据从android插入MySQL

时间:2015-12-30 08:43:37

标签: java php android mysql arraylist

问题描述

  

数据无法插入MySQL但使用的值显示   `的print_r($ listItems中)。

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

WorkDetails.java

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

print_r($listItems);

输出

enter image description here

使用

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

配置

element = {}
element.class
# => Hash
a = []
a.class
# => Array

3 个答案:

答案 0 :(得分:2)

你有

o_name   |  follow_status
oops2    |  Yes
oops3    |  Yes

但是在绑定时

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

答案 1 :(得分:1)

最初的问题是bind_param使用了6个占位符,但实际的sql只有5个字段 - 大概是第6个是twf

<?php
    if( $_SERVER['REQUEST_METHOD']=='POST' ){
        /* Typical port is 3306 */
        $mysqli = new mysqli('127.0.0.1:3307', 'root', '', 'androiddb');

        if ( $mysqli->connect_errno ) echo 'Failed to connect to MySQL';/* never reveal too much detail */
        else {

            $listItems = json_decode( $_POST['listItems'], true); 

            $sql='INSERT INTO `work_details` ( `project`, `work_description`, `percentage`, `timeIn`, `timeOut`, `twf` ) VALUES ( ?, ?, ?, ?, ? );'; 
            $stmt=$mysqli->prepare( $sql );

            if( $stmt ){
                foreach( $listItems as $index => $item ){

                    $project=$item['project'];
                    $description=$item['work_description'];
                    $percentage=$item['percentage'];
                    $timeIn=$item['timeIn'];
                    $timeOut=$item['timeOut'];
                    $twf=$item['twf'];

                    $stmt->bind_param('ssssss', $project, $description, $percentage, $timeIn, $timeOut, $twf );
                    $res=$stmt->execute();

                }
                $stmt->close();
            }
            $mysqli->close();
        }
    }
?>

答案 2 :(得分:0)

以下代码可以将listView数据插入php MySQL

 <?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)) {
             foreach($listItems as $item){ 
                $stmt->bind_param('sssss', $item['project'], $item['work_description'], $item['percentage'], $item['timeIn'], $item['timeOut']);
                if (!$stmt->execute()) {
                    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
                }
            } 
        }
        $mysqli->close();
    }
    ?>