2014-02-23 2 views
0

PHP를 통해 MySQL 데이터베이스에 모든 Json 데이터를 가져 오려고합니다.이 json 객체에 내 모든 전화 연락처 정보가 있지만, 마지막으로 하나만 삽입합니다. 전화 연락 세부 내 데이터베이스에 도움이 제발 이미 질문을 게시했지만 만족스러운 답변을 찾지 못했습니다. 나는 응용 프로그램을 디버깅하고 makehttprequest (.....) 함수의 매개 변수에있는 모든 연락처 세부 정보를 포함하지만 마지막 연락처 상세 정보 만 데이터베이스에 삽입합니다.Json 객체의 모든 데이터를 PHP를 통해 데이터베이스에 가져 오지 못함

내 PHP 코드는 아래와 같습니다

: 나는 동안 복사

$response = array(); 

// check for required fields 

if (isset($_POST['name']) && isset($_POST['id']) && isset($_POST['phone'])&& isset($_POST['email'])) { 

    $id = $_POST['id']; 
    $name = $_POST['name']; 
    $phone = $_POST['phone']; 
    $email = $_POST['email']; 

    // include db connect class 
    require_once __DIR__ . '/db_connect.php'; 

    // connecting to db 
    $db = new DB_CONNECT(); 

    // mysql inserting a new row 
    $result = mysql_query("INSERT INTO crm(id, name, phone, email) VALUES('$id', '$name', '$phone', '$email')"); 

    // check if row inserted or not 
    if ($result) { 
     // successfully inserted into database 
     $response["success"] = 1; 
     $response["message"] = "Product 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); 
} 
?> 

내 JSON 객체 응용 프로그램을 디버깅하는 것입니다 :

[ID = 85, 이름 = , 전화 =, 이메일 = 2 , id = 106, name = , phone =, email = 2, id = 93, name = , phone =, email = 2, id = 62, name =., phone = * 100 #, email = 2 아이디 = 104, 아이디 = 00, 전화 = 00, 이메일 = 2, 아이디 = 90, 아이디 = 03005103877, 전화 = 03005103877, 이메일 = 2, 아이디 = 26, 아이디 = 03005580234, 전화 = 03005580234 , email = 2, id = 154, name = Wajaht, phone = + 923336124178, email = 2, id = 230, name = Yasir Altaf, 전화 = 03215169284, 이메일 = 2, id = 55, name = Zafar Abbas, phone = 03016775189, 이메일 = 2]

그러나 그것은 이름 = 자파르 압바스입니다 마지막 접촉 세부 사항을 삽입, 전화 = 03016775189, 이메일은 = 2하지만 한 번에 모든 세부 사항을 삽입하려면,

을 감사합니다 좀 도와주세요

AYsync 작업 클래스 :

public class LoadSavingInDatabase extends AsyncTask<ArrayList<SavingContacts>,String,String>{ 

     private static final String TAG_SUCCESS = "success"; 
     private static final String URL = "http://amiranzur.com/android_connect/create_product.php"; 

     JSONObject jsonObject= null; 

     @Override 
     protected String doInBackground(ArrayList<SavingContacts>... param) { 


      ArrayList<SavingContacts> contactArray = param[0]; 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      for(int i = 0; i < contactArray.size(); i++){ 
       SavingContacts contact = contactArray.get(i); 
      params.add(new BasicNameValuePair("id", contact.id)); 
      params.add(new BasicNameValuePair("name", contact.name)); 
      params.add(new BasicNameValuePair("phone", contact.phone)); 
     params.add(new BasicNameValuePair("email" , contact.email)); 
      }   
      JSONObject jsonObject= new JSONParser().makeHttpRequest(URL, "POST", params); 

     if(jsonObject != null){ 
      try { 
       int success = jsonObject.getInt(TAG_SUCCESS); 

       if (success == 1) { 

       Log.d("create","ok2"); 

       bool = true; 
       Log.d("insert","true" + bool); 
       } else { 

       } 
      } catch (JSONException e) { 
       Log.d("exception","exc "+e); 
       Log.d("create","lpc"); 
      } 

     } 
     else if(jsonObject == null){ 
      Log.d("null", "null1"); 
      bool = false; 
     } 


      return null; 
     } 
    } 
     protected void onPostExecute(boolean bool){ 
      if(bool == false) 
      Log.d("Insertion failed", "ID already inserted"); 


     } 

JSON P의 arser 등급 :

+0

당신이 입력이 어떻게 될지의 예를 줄 수 : 각 반복에서 삽입을 수행 할 수 있도록

루프 내부의 요청을 이동

? 예를 들어'$ _POST [ 'name']'또는'$ _POST [ 'id']'의 일반적인 값은 무엇입니까? –

+0

데이터베이스에 삽입해야하는 내 json 객체를 언급 한 질문을 편집했으나 마지막 세부 정보 만 삽입합니다. – Shazar

+0

JSON 객체가 보이지만 전체 JSON 객체를 어떻게 전달했는지 이해할 수 없습니다. $ _POST' 변수가 있습니다. 양식이 실제로 제출 될 때,'$ _POST [ 'name']'와 같은 값은 무엇입니까? 그것은 아마도 ... 자파르 압바스 다. 단일 문자열. 그래서 PHP 코드는'$ _POST'에서 나온 4 개의 문자열 입력을 기반으로 한 단일 레코드를 삽입하는 코드입니다. 더 중요한 질문은'$ _POST' 요청에 전달할 내용입니다. 여러 레코드를 삽입하려면 json 객체를 하나의'$ _POST' var로 문자열로 전달해야합니다. –

답변

0

문제는 여기에 있습니다 : 당신은 왜 당신은 INSERT 마지막 값을 설명하는 것, 단지 루프 후 요청을

for(int i = 0; i < contactArray.size(); i++){ 
    SavingContacts contact = contactArray.get(i); 
    params.add(new BasicNameValuePair("id", contact.id)); 
    params.add(new BasicNameValuePair("name", contact.name)); 
    params.add(new BasicNameValuePair("phone", contact.phone)); 
    params.add(new BasicNameValuePair("email" , contact.email)); 
}   
JSONObject jsonObject= new JSONParser().makeHttpRequest(URL, "POST", params); 

.

bool isSuccessful; 
for(int i = 0; i < contactArray.size(); i++){ 
    SavingContacts contact = contactArray.get(i); 
    params.add(new BasicNameValuePair("id", contact.id)); 
    params.add(new BasicNameValuePair("name", contact.name)); 
    params.add(new BasicNameValuePair("phone", contact.phone)); 
    params.add(new BasicNameValuePair("email" , contact.email)); 
    //INSERT at each iteration 
    JSONObject jsonObject= new JSONParser().makeHttpRequest(URL, "POST", params); 
    if(jsonObject != null){ 
     try { 
      int success = jsonObject.getInt(TAG_SUCCESS); 
      if (success == 1) { 
       Log.d("debug", "Contact Id# " + contact.id +" Inserted"); 
      } else { 
       Log.d("debug", "Contact Id# " + contact.id +" FAILED"); 
      } 
      isSuccessful = true; 
     } catch (JSONException e) { 
      Log.d("exception","exc "+e); 
      Log.d("create","lpc"); 
      isSuccessful = false; 
     } 
    }else{ 
     Log.d("debug", "json is null"); 
     isSuccessful = false; 
    } 
}   
return isSuccessful; 
관련 문제