无法将用户注册到数据库。没有错误

时间:2016-07-28 17:28:06

标签: java php android mysqli

我一直在尝试为我的应用程序的用户创建一个注册表单,但我似乎无法将新用户注册到我的数据库。编译时我没有错误,甚至没有显示错误对话框。我是PHP和MYSQLI的菜鸟。非常感谢帮助。 PS我正在使用Volley。

这是我的Register.java代码:

public class Register extends AppCompatActivity {


Button btnRegister;

EditText UserName, Name, Surname, Email, Bdate, Bmonth, Byear, HouseNr, StreetName, CityName,
         PostalCode, CountryName, CountryMobileCode, Mobile, Password, ConPassword;

String   userName, name, surname, email, bdate, bmonth, byear, houseNr, streetName, cityName,
         postalCode, countryName, countryMobileCode, mobile, password, conPassword;

String reg_url = "http://xxxxxxxxxx/register.php";

String birthday, address, userMobile;

AlertDialog.Builder builder;


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

    btnRegister = (Button) findViewById(R.id.btnDetailsConfirm);

    UserName = (EditText) findViewById(R.id.etUsername);
    Name = (EditText) findViewById(R.id.etName);
    Surname = (EditText) findViewById(R.id.etSurname);
    Email = (EditText) findViewById(R.id.etEmail);
    Bdate = (EditText) findViewById(R.id.etBday);
    Bmonth = (EditText) findViewById(R.id.etBmonth);
    Byear = (EditText) findViewById(R.id.etByear);
    HouseNr = (EditText) findViewById(R.id.etHouseNr);
    StreetName = (EditText) findViewById(R.id.etStreetName);
    CityName = (EditText) findViewById(R.id.etCity);
    PostalCode = (EditText) findViewById(R.id.etPostalCode);
    CountryName = (EditText) findViewById(R.id.etCountry);
    CountryMobileCode = (EditText) findViewById(R.id.etMobileExt);
    Mobile = (EditText) findViewById(R.id.etMobileNr);
    Password = (EditText) findViewById(R.id.etPassword);
    ConPassword = (EditText) findViewById(R.id.etPasswordCon);

    builder = new AlertDialog.Builder(Register.this);

    btnRegister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            userName = UserName.getText().toString();
            name = Name.getText().toString();
            surname = Surname.getText().toString();
            email = Email.getText().toString();
            bdate = Bdate.getText().toString();
            bmonth = Bmonth.getText().toString();
            byear = Byear.getText().toString();
            houseNr = HouseNr.getText().toString();
            streetName = StreetName.getText().toString();
            cityName = CityName.getText().toString();
            postalCode = PostalCode.getText().toString();
            countryName = CountryName.getText().toString();
            countryMobileCode = CountryMobileCode.getText().toString();
            mobile = Mobile.getText().toString();
            password = Password.getText().toString();
            conPassword = ConPassword.getText().toString();


            birthday = bdate+"/"+bmonth+"/"+byear;
            address = houseNr+" "+streetName+", "+cityName;
            userMobile = countryMobileCode+mobile;

            if(userName.equals("")||name.equals("")||surname.equals("")||email.equals("")||bdate.equals("")||bmonth.equals("")||byear.equals("")||
                    houseNr.equals("")||streetName.equals("")||cityName.equals("")||postalCode.equals("")||countryName.equals("")||countryMobileCode.equals("")||
                    mobile.equals("")||password.equals("")||conPassword.equals(""))
            {
                builder.setTitle("Something has gone wrong...");
                    builder.setMessage("Please fill in all the fields.");
                    displayAlert("input_error");
            }

            else
            {
                if(!(password.equals(conPassword)))
                {
                    builder.setTitle("Something has gone wrong...");
                    builder.setMessage("Passwords do not match.");
                    displayAlert("input_error");
                }
                else
                {
                    StringRequest stringRequest = new StringRequest(Request.Method.POST, reg_url,
                            new Response.Listener<String>() {
                                @Override
                                public void onResponse(String response) {

                                    try {
                                        JSONArray jsonArray = new JSONArray(response);
                                        JSONObject jsonObject = jsonArray.getJSONObject(0);
                                        String code = jsonObject.getString("code");
                                        String message = jsonObject.getString("message");
                                        builder.setTitle("Server Response...");
                                        builder.setMessage(message);
                                        displayAlert(code);

                                    } catch (JSONException e){
                                        e.printStackTrace();
                                    }
                                }
                                }, new Response.ErrorListener()

                                {
                                    @Override
                                    public void onErrorResponse(VolleyError error){

                                }
                                }){
                        @Override
                        protected Map<String,String> getParams() throws AuthFailureError {
                            Map<String, String> params = new HashMap<String,String>();

                            params.put("user_name", userName);
                            params.put("name", name);
                            params.put("surname", surname);
                            params.put("email", email);
                            params.put("birthday", birthday);
                            params.put("address", address);
                            params.put("postal_code", postalCode);
                            params.put("city", cityName);
                            params.put("country", countryName);
                            params.put("mobile", userMobile);
                            params.put("password", password);


                            return params;
                        }
                    };

                    MySingleton.getInstance(Register.this).addToRequestQue(stringRequest);

                }
            }



        }
    });
}

public void displayAlert(final String code)
{
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {

            if (code.equals("input_error"))
            {
                Password.setText("");
                ConPassword.setText("");
            }
            else if (code.equals("reg_success"))
            {
                finish();
            }

            else if(code.equals("reg_failed"))
            {
                UserName.setText("");
                Name.setText("");
                Surname.setText("");
                Email.setText("");
                Bdate.setText("");
                Bmonth.setText("");
                Byear.setText("");
                HouseNr.setText("");
                StreetName.setText("");
                CityName.setText("");
                PostalCode.setText("");
                CountryName.setText("");
                CountryMobileCode.setText("");
                Mobile.setText("");
                Password.setText("");
                ConPassword.setText("");
            }
        }
    });

    AlertDialog alertDialog = builder.create();
        alertDialog.show();

}
}

这是我的MySingleton.java代码:

public class MySingleton {

private static MySingleton mInstance;
private RequestQueue requestQueue;
private static Context mCtx;
private MySingleton(Context context)
{
    mCtx = context;
    requestQueue = getRequestQueue();
}


public RequestQueue getRequestQueue()
{
    if(requestQueue==null)
    {
        requestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
    }
    return requestQueue;
}
public static synchronized MySingleton getInstance(Context context)
{
    if(mInstance == null)
    {
        mInstance = new MySingleton(context);
    }
    return mInstance;

}

public <T> void addToRequestQue (Request<T> request)
{
    requestQueue.add(request);
}
}

这是我的register.php代码:

<?php

$user_name = $_POST["user_name"];
$name = $_POST["name"];
$surname = $_POST["surname"];
$email = $_POST["email"];
$birthday = $_POST["birthday"];
$address = $_POST["address"];
$postal_code = $_POST["postal_code"];
$city = $_POST["city"];
$country = $_POST["country"];
$mobile = $_POST["mobile"];
$password = $_POST["password"];

$sql = "select * from user_info where email like '".$email."';";

$result = mysqli_query($con,$sql);
$response = array();

if(mysqli_num_rows($result)>0)
{
$code = "reg_failed";
$message = "User already exists....";
array_push($response, array("code"=>$code, "message"=>$message));
echo json_encode($response);
}
else
{
    $sql = "insert into user_info         values('".$user_name."','".$name."','".$surname."','".$email."','".$birthday."',
                                    '".$address."','".$postal_code."','".$city."','".$country."','".$mobile."', '".$password."');";

$result = mysqli_query($con,$sql);

$code = "reg_success";
$message = "Thank you for registering with us! Now you can login.";
array_push($response, array("code"=>$code, "message"=>$message));
echo json_encode($response);

}

mysqli_close($con);


?>

:编辑:我的错误如下:

07-30 11:44:08.266 1824-2790/com.example.brian.loginnode E/Volley: [177]     NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
                                                               java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
                                                                   at libcore.net.UriCodec.encode(UriCodec.java:132)
                                                                   at java.net.URLEncoder.encode(URLEncoder.java:57)
                                                                   at com.android.volley.Request.encodeParameters(Request.java:484)
                                                                   at com.android.volley.Request.getBody(Request.java:470)
                                                                   at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:253)
                                                                   at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:227)
                                                                   at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:107)
                                                                   at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:97)
                                                                   at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:114)


                                                               [ 07-30 11:44:10.011    81:   81 D/         ]
                                                               Socket deconnection

                                                               [ 07-30 11:44:12.009    81:   81 D/         ]
                                                               Socket deconnection

                                                               [ 07-30 11:44:14.004    81:   81 D/         ]
                                                               Socket deconnection

                                                               [ 07-30 11:44:16.011    81:   81 D/         ]
                                                               Socket deconnection

                                                               [ 07-30 11:44:18.006    81:   81 D/         ]
                                                               Socket deconnection

                                                               [ 07-30 11:44:20.003    81:   81 D/         ]
                                                               Socket deconnection

1 个答案:

答案 0 :(得分:0)

基本上,你的onErrorResponse方法应该做一些事情来记录错误信息(例如,显示一个弹出窗口 - 类似于displayAlert方法)。此外,由于您的异常处理程序只执行e.printStackTrace(),如果抛出任何异常,它们将被打印到控制台 - 无论在哪里。因此,您可能还想包含一些警告对话框而不是e.printStackTrace() - 至少显示一个带有e.getMessage()的警报。