2014-09-04 59 views
0

我嘗試寫一個簡單的php文件,它檢查一個mysql值是否存在。php - 解析單個值到android

爲此,我需要解析從json到android的簡單字符串。

例如:當值存在時,字符串是「是」,當它不存在時,字符串是「否」。

同時,我嘗試了很多「解決方案」,但沒有任何工作。

要做到這一點,我通常用這個:

$abfrage = " 
SELECT 
Something 
FROM 
somewhere 
WHERE 
This=$that" 

; 


$link = mysql_query($abfrage) OR die("Error:"+mysql_error()); 


while($line = mysql_fetch_assoc($link)){ 
$new=$line; 

    } 


print(json_encode($new)); 

,並在安卓

try 
    { 
     BufferedReader reader = new BufferedReader 
      (new InputStreamReader(is,"utf-8"),8); 
      StringBuilder sb = new StringBuilder(); 
      while ((line = reader.readLine()) != null) 
    { 
      sb.append(line + "\n"); 
     } 
      is.close(); 
      result = sb.toString(); 
     Log.e("pass 2", "connection success "); 
} 
    catch(Exception e) 
    { 
    Log.e("Fail 2", e.toString()); 
}  

try 
    { 
System.out.println(result); 


     json_data = new JSONObject(result); 

     String name=(json_data.getString("something")); 

    Log.e("pass 3", "connection success "); 
    } 
    catch(Exception e) 
    { 
     Log.e("result:", result.toString()); 


     } 

    } 

這種運作良好,字符串「名」的該值是「東西的價值」。

但現在我的問題:

是否有可能挽救一個字符串在PHP和解析它們到Android?

這是我得到:

$abfrage = "SELECT Something FROM somewhere WHERE This = '$that' LIMIT 1"; 





// Proof whether the value exists or not 

$read = mysql_db_query($db, $abfrage);  
if (mysql_num_rows($read) == 0){ 

$value="no"; 
} 
else{ 
$value="yes"; 
}; 

    print json_encode($value); 

而在JAVA:

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://localhost/test.php"); 
HttpResponse response = httpclient.execute(httppost); 



String str = EntityUtils.toString(response.getEntity()); 
System.out.println(""+str); //prints: yes 


    if(str=="yes") System.out.println("ok"); //not called 
    if(str=="no") System.out.println("nope"); //not called 

回答

0

我之前遇到過這個問題幾個月:

的問題是,字符串str,不僅包含單詞「是」。它還包含不同的字母/符號,它們不會在Android/Eclipse中顯示。所以,你必須通過簡單地調用子(INT開始,詮釋完)

試試這個手動刪除這些信件:

String str = EntityUtils.toString(response.getEntity()); 


    int number= str.length(); 
    System.out.println("str-length"+number); //You will see not the length of 3 (for yes) 

    String s2= str.substring(0, 3); //short the string 
    System.out.println("String s2"+s2); 

    if(s2.equals("yes"))Log.d("Titles", str); 
+1

yeeeesssssss ..謝謝你! – 2014-09-04 12:24:01

+1

這是奇怪的事情!所以我猜有些東西是在發送值的時候添加的,我認爲一定要有辦法處理它,而不是手動刪除符號 – 2014-09-04 12:27:45

+0

這是我知道,處理它的唯一方法,但總的來說應該有一個更簡單的方法。 – 2014-09-04 12:30:47

1

我不知道你是如何實現的,但我認爲你從執行PHP腳本java code with such like like:

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://localhost/sample/sample.php"); 
HttpResponse response = httpclient.execute(httppost); 

然後只需使用:

String str = EntityUtils.toString(response.getEntity()); 

使用

Log.d("Title", "Message"); 

要顯示在logcat的控制檯消息。

+1

請看到我的編輯 – 2014-09-04 11:18:54

+1

,所以我想我的答案是確定。只需使用我提供的代碼。如果您從'test.php'回顯某些內容,則應該將其返回並保存在'response'中。只是將它解析爲字符串(最後一行),就是這樣 - 「str」應該包含來自PHP腳本 – 2014-09-04 11:23:34

+1

的'$ value'值,它的工作原理和str的值是「yes」,但unfortunatley我無法處理這個。例如:if(str ==「yes」){this never called); – 2014-09-04 11:33:14