将数据添加到localhost上的Mysql数据库中


Adding data into Mysql database on localhost

我试图创建一个注册表,但应用程序一直崩溃我想这可能是我的虚拟模拟器的URL,我尝试了10.0.2.2和10.0.3.2,我检查了虚拟框以查看要使用的地址,我得到了192.168.79.2,但它们都不起作用。

这是我的BackgroundTask.java

 public class BackgroundTask extends  
                  AsyncTask<String,Void,String> {
    Context ctx;
    BackgroundTask(Context ctx){
        this.ctx=ctx;
    }
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }
    @Override
    protected String doInBackground(String... params) {
        String method= params[0];
        String reg_url="http://192.168.79.2/webapp/register.php";
       // String login_url="http://10.0.2.2/webapp/login.php";
        if(method.equals("register")){
            String names=params[1];
            String user_name=params[2];
            String user_pass=params[3];
            try {
                URL url= new URL(reg_url);
                HttpsURLConnection httpsURLConnection = (HttpsURLConnection)  
                url.openConnection();
                httpsURLConnection.setRequestMethod("POST");
                httpsURLConnection.setDoOutput(true);
                OutputStream OS=httpsURLConnection.getOutputStream();
                BufferedWriter bufferedWriter =new BufferedWriter(new   
             OutputStreamWriter(OS, "UTF-8"));
                String data = URLEncoder.encode("user", "UTF-8")+"="+URLEncoder.encode(names, "UTF-8")+"&"+
                        URLEncoder.encode("user_name", "UTF-8")+"="+URLEncoder.encode(user_name, "UTF-8")+"&"+
                        URLEncoder.encode("user_pass", "UTF-8")+"="+URLEncoder.encode(user_pass, "UTF-8");
                bufferedWriter.write(data);
                bufferedWriter.flush();
                OS.close();
                InputStream IS = httpsURLConnection.getInputStream();
                IS.close();
                return "Registration success";
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            ;
        }
        return null;
    }
    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }
    @Override
    protected void onPostExecute(String result) {
        Toast.makeText(ctx,"result" ,Toast.LENGTH_LONG).show();
    }
}

这是我的Register.java活动

public class Register extends Activity {
    EditText ET_NAME, ET_USER_NAME, ET_USER_PASS;
    String name, user_name, user_pass;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        ET_NAME=(EditText) findViewById(R.id.name);
        ET_USER_NAME=(EditText) findViewById(R.id.username);
        ET_USER_PASS=(EditText) findViewById(R.id.pass);
    }
    public void userReg(View view){
        name= ET_NAME.getText().toString();
        user_name=ET_USER_NAME.getText().toString();
        user_pass=ET_USER_PASS.getText().toString();
        String method= "register";
        BackgroundTask backgroundTask = new BackgroundTask(this);
        backgroundTask.execute(method, name, user_name, user_pass);
        finish();
    }
}

这是我的register.php文件

<?php
require"init.php";
$names=$_POST["names"];
$user_name=$_POST["user_name"];
$user_pass=$_POST["user_pass"];
$sql_query="insert into info values('$names', '$user_name', '$user_pass');";
if(mysqli_query($con, $sql_query)){
//echo"<h3>Data insertion Success...</h3>";
}
else{
//echo"Data insertion error...".mysqli_error($con);
}
?>

您的解决方案

据我所见,第一行应该是URLEncoder.encode("user", "UTF-8")吗?很明显,PHP表单显示$names=$_POST["names"];,这意味着POST变量应该names

如果您的数据库没有为null变量配置,它将出错。

String data = URLEncoder.encode("user", "UTF-8")+"="+URLEncoder.encode(names, "UTF-8")+"&"+
              URLEncoder.encode("user_name", "UTF-8")+"="+URLEncoder.encode(user_name, "UTF-8")+"&"+
              URLEncoder.encode("user_pass", "UTF-8")+"="+URLEncoder.encode(user_pass, "UTF-8");

将异步任务调用为

ArrayList<String> params = new ArrayList<String>();
                        params.add(name);
                        params.add(userId);
                        params.add(passw);
                        new registerTask().execute(params);

试试这个:

 public class registerTask extends AsyncTask<ArrayList<String>, Void, ArrayList<String>> {
            @Override
            protected void onPreExecute() {
                progress1.setVisibility(View.VISIBLE);
            }
            protected ArrayList<String> doInBackground(ArrayList<String>... passing) {
                ArrayList<String> result = new ArrayList<String>();
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://192.168.79.2/webapp/register.php");
                String responses = null;
                ArrayList<String> data = passing[0];
                String name = data.get(0);
                String uid = data.get(1);
                String passw = data.get(2);
                int ik;
                try {
                    //add data
                    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
                    nameValuePairs.add(new BasicNameValuePair("names", name));
                    nameValuePairs.add(new BasicNameValuePair("user_name", uid));
                    nameValuePairs.add(new BasicNameValuePair("user_pass", passw));
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    //execute http post
                    HttpResponse response = httpclient.execute(httppost);
//You will get the response from server in response
                    HttpEntity entity = response.getEntity();
                    String content = EntityUtils.toString(entity);
                } catch (ClientProtocolException e) {
                } catch (IOException e) {
                }
                return "Success"; //return result
            }
            protected void onPostExecute(ArrayList<String> result) {
            }
        }

我不知道我是否错过了什么。。。。试试这个。。

谢谢@lefsFrare我的导入有问题

i更改自:javax.net.ssl.HttpsURLConnection;至:java.net.HttpURLConnection;