I am trying to insert data from android application to mysql database table.
but somehow Data is not getting inserted.. I think android and mysql database is not connected. I am not getting any error from android side. but at php side… if i run url .. I get notices. that undefined variables. but those variables are in android.
This my android side code :
package com.example.insertintophp;
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.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
EditText name,city,email,contact,msg;
Button insert;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
name =(EditText)findViewById(R.id.txtname);
city =(EditText)findViewById(R.id.txtcity);
email =(EditText)findViewById(R.id.txteid);
contact =(EditText)findViewById(R.id.txtno);
msg =(EditText)findViewById(R.id.txtmsg);
insert=(Button)findViewById(R.id.btninsert);
insert.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
String nm = name.getText().toString();
String ct = city.getText().toString();
String emailid = email.getText().toString();
String no = contact.getText().toString();
String str = msg.getText().toString();
insertRecords(nm, ct, emailid, no, str);
}
private void insertRecords(String nm,String ct,String emailid,String no,String str)
{
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
nameValuePairs.add(new BasicNameValuePair("name", nm));
nameValuePairs.add(new BasicNameValuePair("city",ct));
nameValuePairs.add(new BasicNameValuePair("email",emailid));
nameValuePairs.add(new BasicNameValuePair("contact",no));
nameValuePairs.add(new BasicNameValuePair("msg",str));
sendData(nameValuePairs);
}
private void sendData(ArrayList<NameValuePair> data)
{
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2:8080/demo/insertData.php");
httppost.setEntity(new UrlEncodedFormEntity(data));
HttpResponse response = httpclient.execute(httppost);
}
catch (Exception e) {
// TODO: handle exception
Log.e("log_tag", "Error: "+e.toString());
}
}
});
}
}
And this is my php side code :
<?php
$icon = mysql_connect("localhost","root","");
if(!$icon)
{
die('Could not connect : ' . mysql_error());
}
mysql_select_db("db_best_voyage", $icon)or die("database selection error");
echo json_encode($data);
$name=$_POST['name'];
$city=$_POST['city'];
$email = $_POST['email'];
$contact = $_POST['contact'];
$msg = $_POST['msg'];
mysql_query("INSERT INTO ctable (name,city,email,contact,msg) VALUES ('".$name."', '".$city."', '".$email."', '".$contact."', '".$msg."')");
mysql_close($icon);
?>
It’s because
1)You haven’t declared/initialized any $data variable, but you are encoding it to json and echoing.2)Moreover, you echo the jsonencoded data after accessing the post parameters and inserting them in the database like below.Make sure to feed the $data with some data to ensure that you are successfully inserting the record.
Edit:
Test this first from your browser: