Java php-将单个值解析为android

Java php-将单个值解析为android,java,php,android,mysql,json,Java,Php,Android,Mysql,Json,我尝试编写一个简单的php文件,用于检查mysql值是否存在 为此,我需要将一个简单的字符串从json解析为android e、 g:当值存在时,字符串为“是”,当值不存在时,字符串为“否” 与此同时,我尝试了很多“解决方案”,但都不管用 为此,我通常使用以下方法: $abfrage = " SELECT Something FROM somewhere WHERE This=$that" ; $link = mysql_query($abfrage) OR die("Err

我尝试编写一个简单的php文件,用于检查mysql值是否存在

为此,我需要将一个简单的字符串从json解析为android

e、 g:当值存在时,字符串为“是”,当值不存在时,字符串为“否”

与此同时,我尝试了很多“解决方案”,但都不管用

为此,我通常使用以下方法:

  $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());


        }

    }
这很好,字符串“name”的值就是“something”的值

但现在我的问题是:

 $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);
是否可以在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

我不确定您是如何实现它的,但我假设您使用以下内容从java代码执行PHP脚本:

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://localhost/sample/sample.php");
HttpResponse response = httpclient.execute(httppost);
然后简单地使用:

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


在Logcat控制台中显示消息。

几个月前我遇到过这个问题:

问题在于,字符串str不仅包含单词“yes”。它还包含不同的字母/符号,这些字母/符号在Android/Eclipse中不显示。因此,只需调用substring(int start,int end)即可手动删除这些字母。

试试这个:

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);

所以我想我的答案是可以的。只需使用我提供的代码。如果您从
test.php
中回显某些内容,则应将其返回并在
响应中“保存”。只需将其解析为字符串(最后一行),就是这样-
str
应该包含来自PHP scripttested的
$value
的值,它可以工作,str的值为“yes”,但不幸的是我不能处理这个。示例:if(str==“yes”){从未调用过此函数;请使用当前代码更新代码示例,如果
if
语句不起作用,请使用
System.out.println(…)
语句。如果使用Android,我不确定该语句是否起作用。使用
Log.d(“Title”,str)
相反。它将在您的logcat控制台中显示一条消息。嗯..仍然不工作。甚至Log.d打印出:是的。可能是一个错误?这很奇怪!所以我想在发送值时会添加一些内容。我想一定有办法处理它,而不是手动删除符号。这是我知道的唯一处理方法。但是一般来说,应该有一个更简单的方法。