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?
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. –
Giải quyết vấn đề về cấu hình trong php.ini của tôi –