Java 作为整数传递的字符串
我正在制作一个Android应用程序,其中有一个注册页面,可以将用户保存到数据库中。但由于某些原因,用户名部分一直以整数形式发送(如果我输入字符串,它将发送“0”,如果输入数字,它将发送正确的数字),但该值声明为字符串Java 作为整数传递的字符串,java,php,android,mysql,Java,Php,Android,Mysql,我正在制作一个Android应用程序,其中有一个注册页面,可以将用户保存到数据库中。但由于某些原因,用户名部分一直以整数形式发送(如果我输入字符串,它将发送“0”,如果输入数字,它将发送正确的数字),但该值声明为字符串 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_re
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
final EditText etName = (EditText) findViewById(R.id.etName);
final EditText etUsername = (EditText) findViewById(R.id.etUsername); //This variable here
final EditText etEmail = (EditText) findViewById(R.id.etEmail);
final EditText etPassword = (EditText) findViewById(R.id.etPassword);
final Button bRegister = (Button) findViewById(R.id.bRegister);
bRegister.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
final String name = etName.getText().toString();
final String username = etUsername.getText().toString();
final String email = etEmail.getText().toString();
final String password = etPassword.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){
Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
RegisterActivity.this.startActivity(intent);
}
else{
AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
builder.setMessage("Registration Failed")
.setNegativeButton("Retry", null)
.create()
.show();
}
}
catch(JSONException E){
E.printStackTrace();
}
}
};
RegisterRequest registerRequest = new RegisterRequest( name,username, email,password,responseListener);
RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);
queue.add(registerRequest);
}
});
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u寄存器);
最终EditText etName=(EditText)findViewById(R.id.etName);
final EditText etUsername=(EditText)findViewById(R.id.etUsername);//此处为该变量
最终的EditText-etEmail=(EditText)findViewById(R.id.etEmail);
最终EditText etPassword=(EditText)findViewById(R.id.etPassword);
最终按钮b注册表=(按钮)findViewById(R.id.b注册表);
bRegister.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
最终字符串名称=etName.getText().toString();
最终字符串username=etUsername.getText().toString();
最终字符串email=etEmail.getText().toString();
最终字符串password=etPassword.getText().toString();
Response.Listener responseListener=新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONObject jsonResponse=新的JSONObject(响应);
boolean success=jsonResponse.getBoolean(“success”);
如果(成功){
意向意向=新意向(RegisterActivity.this、LoginActivity.class);
RegisterActivity.this.startActivity(意向);
}
否则{
AlertDialog.Builder=新建AlertDialog.Builder(RegisterActivity.this);
builder.setMessage(“注册失败”)
.setNegativeButton(“重试”,null)
.create()
.show();
}
}
捕获(JSONException E){
E.printStackTrace();
}
}
};
RegisterRequest RegisterRequest=新的RegisterRequest(名称、用户名、电子邮件、密码、响应侦听器);
RequestQueue=Volley.newRequestQueue(RegisterActivity.this);
添加(registerRequest);
}
});
请求:
public class RegisterRequest extends StringRequest {
private static final String REGISTER_REQUEST_URL = "server link";
private Map<String, String> params;
public RegisterRequest(String name, String username, String email, String password, Response.Listener<String> listener){
super(Method.POST, REGISTER_REQUEST_URL,listener, null);
params = new HashMap<>();
params.put("name", name);
params.put("username", username);
params.put("email", email);
params.put("password", password);
}
@Override
public Map<String, String> getParams() {
return params;
}
}
公共类RegisterRequest扩展了StringRequest{
专用静态最终字符串寄存器\u请求\u URL=“服务器链接”;
私有映射参数;
公共注册表请求(字符串名称、字符串用户名、字符串电子邮件、字符串密码、响应.侦听器){
super(Method.POST,REGISTER\u REQUEST\u URL,listener,null);
params=新的HashMap();
参数put(“名称”,名称);
参数put(“用户名”,用户名);
参数put(“电子邮件”,电子邮件);
参数put(“密码”,密码);
}
@凌驾
公共映射getParams(){
返回参数;
}
}
我知道这可能会是一件非常愚蠢的事情,但我已经花了两天的时间试图弄清楚这一点。php在哪里?你能为用户名显示EditText的布局定义吗?作为第一步,你应该检查(调试?)你的Android代码,看看是否发送了正确的用户名,然后检查(调试?)你的后端代码,看看它是否在数据库中存储了正确的用户名,如果还可以,那么检查你的数据库模式。现在我们所能做的就是猜测你的错误在哪里。(好吧,我们可以研究Android代码,但我看不出问题出在哪里。)@egg布局定义与其他布局定义相同,但在调试时,无论如何都会看到字符串,因此不能是problem@MarkusKauppinen我对其进行了调试,并发送了正确的字符串。db模式与其他字段相同。php在哪里?能否显示用户名的EditText的布局定义?作为第一步你应该检查(调试?)你的Android代码,看看是否发送了正确的用户名,然后检查(调试?)你的后端代码,看看它是否在数据库中存储了正确的用户名,如果在那一点上还可以,然后检查你的数据库模式。现在我们所能做的就是猜测你的错误在哪里。(好吧,我们可以研究Android代码,但我看不出问题出在哪里。)@egg布局定义与其他布局定义相同,但在调试时可以看到字符串,因此这不是问题所在problem@MarkusKauppinen我对其进行了调试,并发送了正确的字符串。其他字段的db模式相同。
<?php
$con=mysqli_connect("localhost","username","password","dbname");
$name=$_POST["name"];
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "INSERT INTO user (name, username, email, password) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "siss",$name, $username, $email, $password );
mysqli_stmt_execute($statement);
$response = array();
$response["success"] = true;
echo json_encode($response);
?>