簡體   English   中英

使用PHP在我的SQL中插入POST數據

[英]Inserting POST data in my sql using PHP

我正在嘗試將一些數據從android應用程序發送到mysql ,但是只有最后添加的記錄才添加到我的數據庫中 如何通過POST將所有發送的數據添加到數據庫中? 這是我從我的應用程序用來向mysql發送數據的代碼

private void registerUser(){
StringRequest stringRequest = new StringRequest(Request.Method.POST, 
 URL_LOGIN,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show();
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {


Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG).show();
            }
        }){
    @Override
    protected Map<String,String> getParams()throws AuthFailureError{
        Map<String,String> params = new HashMap<String, String>();
        Cursor cursor=db.rawQuery(selectQuery,null);
        if (cursor.moveToFirst()) {
            do {


                    //params.put("sid",cursor.getString(1));
                    params.put("code",cursor.getString(2));
                    params.put("answer", cursor.getString(3));





            } while (cursor.moveToNext());
        }


        return params;
    }

};

RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}

我的PHP代碼:

        $answer = $_POST['answer'];
    $code = $_POST['code'];
    //$sid=$_POST['sid'];
    //$useremail = $_POST['email'];
    //$userpassword = $_POST['password'];
    $user = "root";
    $pass = "";
    $host= "localhost";
    $dbname="offlinesurvey";

    date_default_timezone_set('UTC');
    $date = date('YmdHis');
    //$name=$sid.'_'.$date;
    $con = mysqli_connect($host,$user,$pass,$dbname);


    $sql_create="CREATE TABLE   `offlinesurvey`.`lime_survey_` ( `id` INT NULL AUTO_INCREMENT ,whenadded DATETIME, `code` VARCHAR(255) NOT NULL,`answer` VARCHAR(255) NOT NULL , UNIQUE `id` (`id`)) ENGINE = MyISAM;";
    if(mysqli_query($con,$sql_create)){

    }
    else {
      "No..No";
    }
     $sql="insert into lime_survey_(whenadded,code,answer)

    (Now(),'".$code."','".$answer."');";
    if(mysqli_query($con,$sql)){
        echo  "data inserted";

    }else{
        echo "Failed";
    }

重命名參數以包括方括號,例如code[]answer[] 使用方括號會將php中的數據轉換為第一個數組,例如$_POST['code'][0]$_POST['code'] 。然后,您可以遍歷$_POST['code']並獲取每個值。 只要每個代碼都有答案,每個代碼和答案的鍵就應該對齊。

params.put("code[]",cursor.getString(2));
params.put("answer[]", cursor.getString(3));

PHP方面的快速示例:

foreach($_POST['code'] as $key=>$value){
    echo "Code {$key}: {$value}; Answer {$key}: {$_POST['answer'][$key]}\n";
}

如果您不想信任[]追加(例如,缺少代碼或答案),也可以通過重命名為諸如code[0] / answer[0]code[1]顯式地放置鍵號。 / answer[1]

簡單的解決方法是確保地圖中的每個鍵都不同。 您可以通過使用迭代器變量顯式設置鍵的索引來做到這一點,如下所示:

@Override
protected Map<String,String> getParams()throws AuthFailureError{
    Map<String,String> params = new HashMap<String, String>();
    Cursor cursor=db.rawQuery(selectQuery,null);
    if (cursor.moveToFirst()) {
        //iterator integer
        int i = 0;
        do {
            //concatenate the iterator with the name
            params.put("code[" + String.valueOf(i) + "]",cursor.getString(2));
            params.put("answer[" + String.valueOf(i) + "]", cursor.getString(3));
            i++;
        } while (cursor.moveToNext());
    }

    return params;
}

您仍然需要像上面那樣在php端循環發布數據,以獲取每個記錄並插入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM