2012-12-07 13 views
5

私はAndroidアプリケーションから簡単な挿入をしようとしています。 ?entry="Sample value from browser"を連結して私のphpスクリプトをブラウザから実行できますが、私がAndroidからアプリケーションを実行すると、挿入されません。私はJSONを使用し、AsyncTaskを実装して挿入するクラスを呼び出していますのはここAndroid VMD MySQLの挿入と表示ダイアログ

は次のとおりです。

package us.jtaylorok.android.sqlite.first; 

import java.util.ArrayList; 

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 

import android.app.ProgressDialog; 
import android.content.Context; 
import android.os.AsyncTask; 
import android.util.Log; 
import android.widget.Toast; 

public class RemoteInsert extends AsyncTask<Void, String,String >{ 

    protected String TAG; 
    protected Context context; 
    protected String input; 
    protected ProgressDialog progressDialog; 

    public RemoteInsert(String i,Context c){ 
     this.input = i; 
     this.context = c; 
    } 


    protected void onPreExecute() { 
     //ProgressDialog progressDialog; // = new ProgressDialog(context); 

     //progressDialog=ProgressDialog.show(,"Please Wait..","Sending data to database", false); 
     progressDialog=ProgressDialog.show(context,"Please Wait..","Sending data to database", false); 
    } 

    @Override 
    protected String doInBackground(Void... params) { 
     try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      //HttpPost httppost = new HttpPost("http://localhost/index.php"); 
      //HttpPost httppost = new HttpPost("http://10.253.8.88/patient_data/patient_data.php"); 
      HttpPost httppost = new HttpPost("http://10.100.205.72/patient_data/patient_data.php"); 

      ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); 
      postParameters.add(new BasicNameValuePair("entry", "Input from Android")); 

      httppost.setEntity(new UrlEncodedFormEntity(postParameters));     
      HttpResponse response = httpclient.execute(httppost); 
      Log.i("postData", response.getStatusLine().toString()); 
     } catch(Exception e) { 
      Log.e(TAG, "Error: "+e.toString()); 
     } 

     return ""; 
    } 

    protected void onPostExecute(String result) { 
     progressDialog.dismiss(); 
     Toast.makeText(context, "Finished", Toast.LENGTH_LONG).show(); 
    } 
} 

そして、ここでは私のPHPスクリプトです:

<?php 
    // mysql_connect("host","username","password"); 
    mysql_connect("localhost","user1","mypassword"); 
    mysql_select_db("test"); 

    $entry_value = $_REQUEST["entry"]; 
    $query = "INSERT INTO patientdata (entry) values (".$entry_value.");"; 
    if(!mysql_query($query)) { 
     /*insert failed*/ 
    } 

    mysql_close(); 
?> 

私はそれを呼び出す場合は、再度、これは完璧に動作しますブラウザから取得しますが、AsyncTaskを実装する前に例外がスローされます。

私はAVDが追加を表示し、削除してもらうんが、私は私のapache2のaccess_logまたはerror_logで要求がないことを行うとき。助言がありますか?

+0

おそらくuser1に権限を与えたときに、localhost以外のものである必要があります。私は$ _REQUESTから値を取得してテキストファイルに書き込むことができたので、mysql_query関数は不安定であるか、または非難されていると思いますか、user1 @ localhost特権の問題が出てきますアンドロイド。私はアンドロイドでブラウザからPHPファイルを実行することからこれを動作させることさえできます。だから、どんな提案も大歓迎です。 –

+0

php.iniの設定の問題を解決しました。 –

答えて

0

あなたはローカルサーバー上にPHPスクリプトを保存していると思います。したがって、この10.0.2.2を使用して、マシンのIPアドレスの代わりにHttpPostを初期化してください。そのローカルホストは、アンドロイド仮想デバイスに相当します。

0

これは、この特定の問題では問題ではありませんでした。この問題は、php.iniの魔法の引用符の設定でした

+0

あなた自身の質問に答えるのはまったく良い方法です。しかし、この答えは、何が起こっていたのか、それをどのように修正したのかを理解するのに十分な詳細を提供していません。あなたの答えに詳細を追加することを検討してください。 – dasblinkenlight