Android注册活动不从用户输入插入数据远程MySQL数据库

时间:2016-04-19 21:46:53

标签: php android mysql android-volley

我在更新远程数据库时遇到问题。存在一个SignUpRrequest类,它扩展了String请求类。

    package com.example.admin.tripod;

import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by admin on 4/19/2016.
 */
public class SignUpRequest extends StringRequest {
    private static final String REGISTER_REQUEST_URL = "http://lushandlaceng.com/php/register.php";
    private Map<String, String> params;

    public SignUpRequest(String fullname, String email, String username, String password, String dob, Response.Listener<String> listener) {
        super(Method.POST, REGISTER_REQUEST_URL, listener, null);
        params = new HashMap<>();
        params.put("fullname", fullname);
        params.put("email", email);
        params.put("username", username);
        params.put("password", password);
        params.put("dob", dob);

    }

    @Override
    public Map<String, String> getParams() {
        return params;
    }
}

注册活动页面使用volley库并具有以下代码来创建SignUpRequest类的实例并对其进行排队。

    package com.example.admin.tripod;

import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;

import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;

import org.json.JSONException;
import org.json.JSONObject;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;

public class SignUpActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_up);

        final EditText inFname = (EditText) findViewById(R.id.txtFnameSignup);
        final EditText inEmail = (EditText) findViewById(R.id.txtEmailSignup);
        final EditText inUser = (EditText) findViewById(R.id.txtUserSignup);
        final EditText inDob = (EditText) findViewById(R.id.txtDobSignup);
        final EditText inPassword = (EditText) findViewById(R.id.txtPasswordSignup);
        final EditText inConfirm = (EditText) findViewById(R.id.txtCpasswordSignup);
        final Button bSignup = (Button) findViewById(R.id.signUpButton);

        final Calendar myCalendar = Calendar.getInstance();

        final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                                  int dayOfMonth) {
                // TODO Auto-generated method stub
                myCalendar.set(Calendar.YEAR, year);
                myCalendar.set(Calendar.MONTH, monthOfYear);
                myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);

                String myFormat = "yyyy-MM-dd"; //In which you need put here
                SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

                inDob.setText(sdf.format(myCalendar.getTime()));

                if(inPassword.requestFocus()) {
                    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
                }
            }

        };

        inDob.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                new DatePickerDialog(SignUpActivity.this, date, myCalendar
                        .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                        myCalendar.get(Calendar.DAY_OF_MONTH)).show();
            }
        });


        ///Registration
        bSignup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String fullname = inFname.getText().toString();
                final String email = inEmail.getText().toString();
                final String username = inUser.getText().toString();
                final String password = inPassword.getText().toString();
                final String dob = inDob.getText().toString();



                Response.Listener<String> responseListener = new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonResponse = new JSONObject(response);
                            boolean success = jsonResponse.getBoolean("success");
                            if (success) {
                                AlertDialog.Builder builder = new AlertDialog.Builder(SignUpActivity.this);
                                builder.setMessage("Register success")
                                        .create()
                                        .show();
                                Intent intent = new Intent(SignUpActivity.this, LoginActivity.class);
                                SignUpActivity.this.startActivity(intent);
                            } else {
                                AlertDialog.Builder builder = new AlertDialog.Builder(SignUpActivity.this);
                                builder.setMessage("Register Failed")
                                        .setNegativeButton("Retry", null)
                                        .create()
                                        .show();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                };

                SignUpRequest registerRequest = new SignUpRequest(fullname, email, username, password, dob, responseListener);
                RequestQueue queue = Volley.newRequestQueue(SignUpActivity.this);
                queue.add(registerRequest);
            }
        });


    }
}

执行请求的php代码具有以下代码;

    <?php
    $con = mysqli_connect("xxx", "yyy", "zzz", "lushandl_tripodtest");


    $fullname = $_POST["fullname"];
    $email = $_POST["email"];
    $username = $_POST["username"];
    $password = $_POST["password"];
    $dob = $_POST["dob"];

    $statement = mysqli_prepare($con, "INSERT INTO user (fullname, email, username, password, dob) VALUES (?, ?, ?, ?, 

?)");
    mysqli_stmt_bind_param($statement, "sssss",  $fullname, $email, $username, $password, $dob);
    mysqli_stmt_execute($statement);

    $response = array();
    $response["success"] = true;  

    echo json_encode($response);
?>

在运行应用程序时,它会返回进程成功的警报并返回登录页面。但是,当我检查数据库时,没有进行任何更改。

Table Structure

请帮助确定问题所在。

代码改编自:https://www.youtube.com/watch?v=T7Z4GVFaT4A

0 个答案:

没有答案