2012-12-07 10 views
5

Próbuję wykonać prostą wstawkę z aplikacji na Androida. Mogę uruchomić mój skrypt php z przeglądarki, łącząc się z ?entry="Sample value from browser", ale kiedy uruchomię aplikację z Androidem, nie otrzymuję wstawki.Android VMD MySQL wstawianie i wyświetlanie okna dialogowego

Oto gdzie Wołam klasę wkładkę, która używa JSON i implementuje AsyncTask:

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

I tu jest mój skrypt 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(); 
?> 

Ponownie, to działa doskonale, jeśli ja to nazywam z przeglądarki, ale zgłasza wyjątek przed implementacją AsyncTask.

zrobić dostać AVD aby wyświetlić dodawać i usuwać, ale kiedy to robię, że nie ma żądanie w moim apache2access_log lub error_log. Jakieś sugestie?

+0

, może gdy przyznam uprawnienia użytkownikowi 1, musi to być coś innego niż localhost. Byłem w stanie pobrać wartości z $ _REQUEST i zapisać je w pliku tekstowym, więc albo funkcja mysql_query jest niestabilna, co, jak sądzę, przeczytałem, że została ona uznana za przestarzałą, albo jest problem z błędem user1 @ localhost, gdy nadchodzi android. Mogę to uruchomić nawet przy uruchomieniu pliku php z przeglądarki na Androida. Więc wszelkie sugestie będą mile widziane. –

+0

Rozwiązany problem z konfiguracją w moim php.ini –

Odpowiedz

0

Myślę, że zapisałeś skrypt php na serwerze lokalnym. Więc używaj tego 10.0.2.2 podczas inicjowania HttpPost zamiast adresu IP twojego komputera. Jego odpowiednik localhost w androidowym urządzeniu wirtualnym.

0

To nie było problemem dla tego konkretnego problemu. Problemem było ustawienie magicznych cudzysłowów w php.ini

+0

Odpowiadając na twoje pytania jest idealnie dobry. Jednak ta odpowiedź nie dostarcza wystarczających informacji, aby zrozumieć, co się dzieje i jak to naprawić. Rozważ dodanie więcej szczegółów do swojej odpowiedzi. – dasblinkenlight

Powiązane problemy