2013-02-22 164 views
1

我按照教程通过Android应用程序中的PHP脚本连接到MySQL数据库。我的问题是(来自LogCat):“Uncaught TypeError:无法调用方法'选择'未定义为null:1”。前段时间我有成功,所以也许我无意中修改了一些导致这种情况的东西?在我的数据库中,有4列,在这方面一切都很好。这是我的PHP代码:从Android连接到MySQL数据库

<?php 

$host="xxxxx"; // Host name 
$username="xxxxx"; // Mysql username 
$password="xxxxx"; // Mysql password 
$db_name="xxxxx"; // Database name 
$tbl_name="xxxxx"; // Table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 

mysql_select_db("$db_name")or die("cannot select DB"); 
$q=mysql_query("SELECT * FROM $tbl_name WHERE pass>'".$_REQUEST['year']."'"); 
while($e=mysql_fetch_assoc($q)) 
    $output[]=$e; 

print(json_encode($output)); 

mysql_close(); 
?> 

...并在Android:

 String result = ""; 
    //the year data to send 
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("year","Pass1")); 

    //http post 
    try{ 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://MyWebsite/queryfromandroid.php"); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
    }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection "+e.toString()); 
    } 
    //convert response to string 
    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()); 
    } 

    //parse json data 
    try{ 
      JSONArray jArray = new JSONArray(result); 
      for(int i=0;i<jArray.length();i++){ 
        JSONObject json_data = jArray.getJSONObject(i); 
        Log.i("log_tag","id: "+json_data.getString("password") 

        ); 
      } 
    } 
    catch(JSONException e){ 
      Log.e("log_tag", "Error parsing data "+e.toString()); 
    } 

感谢。

+0

尝试调用你r浏览器的php脚本 - 这会告诉你脚本中的任何错误。首先解决这些问题,然后继续解决事情的android方面。 – 2013-02-22 15:13:22

+1

现在很多SO用户刚刚看到您的数据库信息,很好!我会建议改变。 – 2013-02-22 15:14:05

+0

对不起,但我无法访问错误日志中的我的免费托管计划,&LogCat,只有这个错误,没有别的... – Nikita 2013-02-22 15:15:02

回答

0

感谢你的一切,但我固定我的问题,一个微小的小错误总是负责这些种错误防不胜防的,这里的代码我已经修改,在PHP脚本:

我换成这样的:

$q=mysql_query("SELECT * FROM $tbl_name WHERE pass>'".$_REQUEST['year']."'"); 

本:

$q=mysql_query("SELECT * FROM $tbl_name WHERE pass='".$_REQUEST['year']."'"); 

这个>这个=