2012-12-20 28 views
2

我在MYSQL數據庫中查找數據,同時我想檢索其中一個插入的屬性,以滿足我成功上傳的要求。當我第一次按下按鈕時,它只會將數據上傳到服務器,並不會返回任何內容。同樣,當我點擊按鈕時,它會執行兩個過程(插入和檢索數據),所以我不能以json對象的形式第一次返回值。JSON數據從PHP服務器不工作。

這是我的PHP代碼engrdatainsert.php

<?php 
$sqlCon=mysql_connect("localhost","root",""); 
mysql_select_db("PeopleData"); 
//Retrieve the data from the Android Post done by and Engr... 
$adp_no = $_REQUEST['adp_no']; 
$building_no = $_POST['building_no']; 
$contractor_name = $_POST['contractor_name']; 
$officer_name = $_POST['officer_name']; 
    $area = $_POST['area']; 

-------------------從Android插入接收到的值------- --- ||

$sql = "INSERT INTO engrdata (adp_no, building_no,area,contractor_name,officer_name)  VALUES('$adp_no', '$building_no', '$are', '$contractor_name', '$officer_name')"; 

// --------現在檢查插入數據的事務狀態--------- ||

$q=mysql_query("SELECT adp_no FROM engrdata WHERE adp_no='$adp_no'"); 
    while($e=mysql_fetch_assoc($q)) 
    $output[]=$e; 
print(json_encode($output));//conveting into json array 
    mysql_close(); 
    ?> 

我的Android代碼

public void insertdata() 
    { 
InputStream is=null; 
String result=null; 
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5); 
     nameValuePairs.add(new BasicNameValuePair("adp_no",adp));//"34")); 
    nameValuePairs.add(new BasicNameValuePair("building_no",bldng));//"72")); 
    nameValuePairs.add(new BasicNameValuePair("area",myarea));//"72")); 
    nameValuePairs.add(new BasicNameValuePair("contractor_name",cntrct));//"72")); 
    nameValuePairs.add(new BasicNameValuePair("officer_name",ofcr));//"72")); 
    //http post 
     try{ 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://10.0.2.2/androidconnection/engrdatainsert.php"); 
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
     Log.i("postData", response.getStatusLine().toString()); 
    } 

    catch(Exception e) 
    { 
     Log.e("log_tag", "Error in http connection "+e.toString()); 
    } 
//convert the input strem into a string value 
    try 
     { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) 
      { 
        sb.append(line + "\n"); 
      } 
      is.close(); 
      result=sb.toString(); 
    } 
    catch(Exception e) 
    { Log.e("log_tag", "Error converting result "+e.toString()); } 
    try 
    { 
     JSONArray jArray = new JSONArray(result); 
     for(int i=0;i<jArray.length();i++) 
     { 
      JSONObject json_data = jArray.getJSONObject(i); 
      Toast.makeText(this, "data is "+json_data.getString("adp_no")+"\n", Toast.LENGTH_LONG).show(); 
      String return_val = json_data.getString("adp_no"); 
      if(return_val!=null) 
      { 
      Intent offff=new Intent(this,MainActivity.class); 
       offff.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       offff.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       //startActivity(offff); 
      } 
     } 
    } 
    //} 
    catch(JSONException e) 
    {  Log.e("log_tag", "Error parsing data "+e.toString());  } 
    // return returnString;//*/ 
    } 
+0

被定義在精確的方式JSON請參閱此鏈接[JSON在Android中] [1] 五月你會發現你的解決方案在這裏的鏈接 [1]:http://stackoverflow.com/questions/2818697/sending-and-parsing-json-in-android –

回答

1

在你的PHP代碼,你是不是在執行INSERT查詢。你需要這樣做:

-------------------插入來自Android的接收值---------- ||

$sql = "INSERT INTO engrdata (adp_no, building_no,area,contractor_name,officer_name)  VALUES('$adp_no', '$building_no', '$are', '$contractor_name', '$officer_name')"; 
mysql_query($sql) or die(mysql_error()); 

// --------現在檢查插入數據的事務狀態--------- ||

注意我添加的行,它實際上執行查詢。

現在你當然應該升級你的代碼到mysqlimysqlPDO,因爲PHP的mysql包不再被支持。

+0

!我的代碼將無法在遠程主機上工作,用於上傳和檢索數據, –

+1

對不起,我無法理解您的評論。 –

+0

我的意思是我正在開發一個應用程序,我將從手機上傳一些數據到服務器,但目前我正在本地主機上使用這種做法,如果我將使用遠程主機,就像任何網站一樣,我已經存儲了我的數據庫,那麼上面的代碼將在這種情況下工作 –

1

如果你想在android中使用JSON作爲服務器的用途。就像如果你要發送的數據和檢索服務器的響應,那麼你必須使用已經在這個環節Json in Android