2013-02-22 160 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']."'"); 

這個>這個=