2012-12-07 41 views
5

Tôi đang cố gắng thực hiện chèn đơn giản từ ứng dụng Android. Tôi có thể chạy tập lệnh php của mình từ trình duyệt bằng cách ghép nối ?entry="Sample value from browser", nhưng khi tôi chạy ứng dụng từ Android, tôi không nhận được chèn.Android VMD MySQL chèn và hiển thị hộp thoại

Đây là nơi tôi kêu gọi các lớp chèn sử dụng JSON và thực hiện 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(); 
    } 
} 

Và đây là kịch bản PHP của tôi:

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

Một lần nữa, điều này hoạt động hoàn hảo nếu tôi gọi nó là từ trình duyệt, nhưng nó ném một ngoại lệ trước khi thực hiện AsyncTask.

tôi làm được AVD để hiển thị các add và remove, nhưng khi tôi làm điều đó không có yêu cầu trong apache2 tôiaccess_log hoặc error_log. Bất kỳ đề xuất?

+0

có thể khi tôi cấp đặc quyền cho user1 nó cần phải từ một thứ khác ngoài localhost. Tôi đã có thể nhận được các giá trị từ $ _REQUEST và ghi chúng vào một tệp văn bản để chức năng mysql_query là flaky mà tôi nghĩ rằng tôi đã đọc rằng nó đã không được chấp nhận hoặc có vấn đề với vấn đề đặc quyền user1 @ localhost khi đến từ android. Tôi thậm chí có thể nhận được điều này để làm việc từ việc chạy các tập tin php từ trình duyệt trong Android. Vì vậy, bất kỳ đề xuất sẽ được chào đón. –

+0

Giải quyết vấn đề về cấu hình trong php.ini của tôi –

Trả lời

0

Tôi nghĩ bạn đã lưu trữ tập lệnh php trên máy chủ cục bộ. Vì vậy, hãy sử dụng 10.0.2.2 này trong khi khởi tạo HttpPost thay vì địa chỉ ip của máy của bạn. Tương đương localhost của nó trong thiết bị Android ảo.

0

Đó không phải là vấn đề cho vấn đề cụ thể này. Vấn đề là cài đặt báo giá ma thuật trong php.ini

+0

Trả lời câu hỏi của riêng bạn là hoàn toàn tốt. Tuy nhiên, câu trả lời này không cung cấp đủ chi tiết để hiểu những gì đang diễn ra và cách bạn khắc phục nó. Vui lòng xem xét thêm các chi tiết khác vào câu trả lời của bạn. – dasblinkenlight

Các vấn đề liên quan