我在更新远程数据库时遇到问题。存在一个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);
?>
在运行应用程序时,它会返回进程成功的警报并返回登录页面。但是,当我检查数据库时,没有进行任何更改。
请帮助确定问题所在。