php - android/php 记录没有插入到 mysql

标签 php android mysql sqlite

我在将记录插入 mysql 表时遇到问题。仅插入最后一条记录。

这是我正在处理的代码:

安卓

   String[] arrDocumentNumber, arrTransactionDate, arrItemCode;

    arrDocumentNumber = dbHelper.getAllDocumentNumbersFromOUTTRANS();
    arrTransactionDate = dbHelper.getAllTransactionDatesFromOUTTRANS();
    arrItemCode = dbHelper.getAllItemCodesFromOUTTRANS();

     protected String doInBackground(String... args) {

        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();

        for(int i = 0; i < arrDocumentNumber.length; i++){

            params.add(new BasicNameValuePair(TAG_DOCUMENTNUMBER, arrDocumentNumber[i] ));
            params.add(new BasicNameValuePair(TAG_TRANSACTIONDATE, arrTransactionDate[i] ));
            params.add(new BasicNameValuePair(TAG_ITEMCODE, arrItemCode[i] )); 

        }

        // getting JSON Object
        // Note that insert outtrans url accepts POST method
        JSONObject json = jsonParser.makeHttpRequest(url_insertTo_outtrans,
                "POST", params);

        //obj.put(params);

        //Log.d("JSON", obj.toString());

        // check log cat from response
        Log.d("Create Response", json.toString());

   }

PHP

    <?php

/*
 * Following code will create a new product row
 * All product details are read from HTTP Post Request
 */

// array for JSON response
$response = array();

// check for required fields
if ( isset($_POST['documentnumber']) && isset($_POST['transactiondate']) && isset($_POST['itemcode']) ){

    $documentnumber = $_POST['documentnumber'];
    $transactiondate = $_POST['transactiondate'];
    $locationdate = $_POST['locationdate'];
    $itemcode = $_POST['itemcode'];
    $qty = $_POST['qty'];
    $amount = $_POST['amount'];
    $reson = $_POST['reason'];
    $posted = $_POST['posted'];
    $dateposted = $_POST['dateposted'];
    $unitprice = $_POST['unitprice'];

    // include db connect class
    include('dbconnect.php');

    $result = $conn->prepare("INSERT INTO outtrans(documentnumber, transactiondate, itemcode) VALUES (:documentnumber, :transactiondate, :itemcode)");


        $result->bindParam(':documentnumber', $documentnumber);
        $result->bindParam(':transactiondate', $transactiondate);
        $result->bindParam(':itemcode', $itemcode); 
        $result->execute();



    // check if row inserted or not
    if ($result) {
        // successfully inserted into database
        $response["success"] = 1;
        $response["message"] = "New record successfully created.";

        // echoing JSON response
        echo json_encode($response);
    } else {
        // failed to insert row
        $response["success"] = 0;
        $response["message"] = "Oops! An error occurred.";

        // echoing JSON response
        echo json_encode($response);
    }
} else {
    // required field is missing
    $response["success"] = 0;
    $response["message"] = "Required field(s) is missing";

    // echoing JSON response
    echo json_encode($response);
}
?>

只有最后一条记录被插入到 mysql 表中。我不太了解 PHP,所以我的 PHP 代码中可能遗漏了一些东西。我将非常感谢您的帮助。谢谢。

最佳答案

这是因为您只使用最后一个参数制作 HttpRequest。 (即)for 循环结束后,params 将只包含最后一条记录。 所以移动

JSONObject json=jsonParser.makeHttpRequest(url_insertTo_outtrans,"POST",params);

进入for循环。

for(int i = 0; i < arrDocumentNumber.length; i++)
{
 List<NameValuePair> params = new ArrayList<NameValuePair>();
 params.add(new BasicNameValuePair(TAG_DOCUMENTNUMBER, arrDocumentNumber[i] ));
 params.add(new BasicNameValuePair(TAG_TRANSACTIONDATE, arrTransactionDate[i] ));
 params.add(new BasicNameValuePair(TAG_ITEMCODE, arrItemCode[i] )); 
 JSONObject json=jsonParser.makeHttpRequest(url_insertTo_outtrans,"POST",params);
}

关于php - android/php 记录没有插入到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20562241/

相关文章:

php - 与 PHP 对话从 Android 应用程序获取命令

php - 从 MySQL 获取数据的更有效方法

php - mysql查询显示表中的所有内容,但不显示某个单词

php - Selectize.js:从数据库中预填充项目选择多选

PHP 连接 MySQL

android - 如何使用自定义链接打开我的 Android 应用程序?

java - 动态设置一个ContentProvider的权限

php - 删除具有 blob text/mediumtext mysql 的重复行

php - 如何返回多个值?

SQL 外连接函数