连接mysql数据库和Android应用程序

问题描述:

我有一个连接数据库和Android应用程序的问题。我正在尝试执行this教程。一切似乎都很好,但我没有取得任何成功而不是错误。连接mysql数据库和Android应用程序

有一个按钮侦听器,它可以在点击时向PHP文件发送帖子并获得结果。下面是它的代码: -

ok.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); 
      postParameters.add(new BasicNameValuePair("username", un.getText().toString())); 
      postParameters.add(new BasicNameValuePair("password", pw.getText().toString())); 
      //String valid = "1"; 
      String response = null; 
      try { 
       response = CustomHttpClient.executeHttpPost("http://10.0.2.2/check.php", postParameters); 
       String res=response.toString(); 
       Log.d("res:", res); 

       // res = res.trim(); 
       res= res.replaceAll("\\s+","");        
       //error.setText(res); 

       if(res.equals("1")) 
        error.setText("Correct Username or Password"); 
       else 
        error.setText("Sorry!! Incorrect Username or Password"); 
      } catch (Exception e) { 
       un.setText(e.toString()); 
      } 

     } 
    }); 

这里是HTTP POST方法: -

public static String executeHttpPost(String url, ArrayList<NameValuePair> postParameters) throws Exception { 
    BufferedReader in = null; 
    try { 
     HttpClient client = getHttpClient(); 
     HttpPost request = new HttpPost(url); 
     UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters); 
     request.setEntity(formEntity); 
     HttpResponse response = client.execute(request); 
     in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

     StringBuffer sb = new StringBuffer(""); 
     String line = ""; 
     String NL = System.getProperty("line.separator"); 
     while ((line = in.readLine()) != null) { 
      sb.append(line + NL); 
     } 
     in.close(); 

     String result = sb.toString(); 
     Log.d("postMethodReturn", result); 
     return result; 
    } finally { 
     if (in != null) { 
      try { 
       in.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

的PHP代码如下: -

<?php 
$un=$_POST['username']; 
$pw=$_POST['password']; 
//connect to the db 
$user = "xyz"; 
$pswd = "xyz"; 
$db = "mydb"; 
$host = "localhost"; 
$conn = mysql_connect($host, $user, $pswd); 
mysql_select_db($db); 
//run the query to search for the username and password the match 
$query = "SELECT * FROM mytable WHERE user = '$un' AND pass = '$pw'"; 
$result = mysql_query($query) or die("Unable to verify user because : " . mysql_error()); 
//this is where the actual verification happens 
if(mysql_num_rows($result) --> 0) 
echo 1; // for correct login response 
else 
echo 0; // for incorrect login response 
?> 

是否有任何错误该程序?我尝试在活动代码中记录res(http响应)的中间值并导致execute post方法,但没有记录任何内容。尝试将“localhost”更改为“127.0.0.1”,并将其更改为公开可用的虚拟主机,但所有数据库环境均未成功。所有这些都在模拟器和公共主机上,也使用真实设备进行尝试。从浏览器检查时,服务器似乎正在运行。数据库与值存在。所有运行的服务(apache,mysql)。

主要问题是没有错误!任何建议发生了什么问题? 找不到有相同问题的人。

+0

你能告诉打印结果吗? –

+0

它总是给出输出为0(不正确的登录响应),不幸的是没有要求的日志。 – gkris

+0

这告诉prblm是PHP功能不在android端...所以先检查你的php连接 –

问题是在PHP代码中的-->。将其更改为==>,一切正常!