Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 电子邮件以0作为值保存在数据库中_Java_Android_Database_Android Studio - Fatal编程技术网

Java 电子邮件以0作为值保存在数据库中

Java 电子邮件以0作为值保存在数据库中,java,android,database,android-studio,Java,Android,Database,Android Studio,我正在为我的应用程序进行注册登录活动,当我注册时,除电子邮件外,所有信息都将进入我的数据库。即使我输入了一个正常的电子邮件地址,我在数据库中也得到了一个“0”作为值 我检查了代码和php文件中的所有内容,但没有发现问题 public class createAccountActivity extends AppCompatActivity implements View.OnClickListener { EditText etUsername,etEmail, etAge, etPasswo

我正在为我的应用程序进行注册登录活动,当我注册时,除电子邮件外,所有信息都将进入我的数据库。即使我输入了一个正常的电子邮件地址,我在数据库中也得到了一个“0”作为值

我检查了代码和php文件中的所有内容,但没有发现问题

public class createAccountActivity extends AppCompatActivity implements View.OnClickListener {

EditText etUsername,etEmail, etAge, etPassword;
Button register;

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


    etUsername = (EditText) findViewById(R.id.create_username);
    etEmail = (EditText) findViewById(R.id.create_email);
    etAge = (EditText) findViewById(R.id.create_age);
    etPassword = (EditText) findViewById(R.id.create_password);
    etConfirmPassword = (EditText) findViewById(R.id.confirm_password);




}

@Override
public void onClick (View v) {
    switch (v.getId()){
        case R.id.register:


            String username = etUsername.getText().toString();
            String email = etEmail.getText().toString();
            int age = Integer.parseInt(etAge.getText().toString());
            String password = etPassword.getText().toString();

            User user = new User(username, email, age, password);
            registerUser(user);

            break;
    }

}

private void registerUser(User user) {
    ServerRequests serverRequest = new ServerRequests(this);
    serverRequest.storeUserDataInBackground(user, new GetUserCallback() {
        @Override
        public void done(User returnedUser) {
            Intent loginIntent = new Intent(createAccountActivity.this, Login.class);
            startActivity(loginIntent);
        }
    });
}
}

在我的UserLocalStore.java中

public void storeUserData(User user) {
    SharedPreferences.Editor userLocalDatabaseEditor = userLocalDatabase.edit();
    userLocalDatabaseEditor.putString("username", user.username);
    userLocalDatabaseEditor.putString("email", user.email);
    userLocalDatabaseEditor.putString("password", user.password);
    userLocalDatabaseEditor.putInt("age", user.age);
    userLocalDatabaseEditor.commit();
}
我的类用户

public class User {

String username, email, password;
int age;

public User(String username,String email , int age, String password) {
    this.username = username;
    this.age = age;
    this.email = email;
    this.password = password;
}

public User(String username, String password) {
    this(username,"", -1, password);
}
}
还有我的ServerRequests.class

if (jObject.length() != 0){
                Log.v("happened", "2");
                String username = jObject.getString("username");
                int age = jObject.getInt("age");
                String email = jObject.getString("email");

                returnedUser = new User(username,  user.username, age, user.password);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return returnedUser;
    }

看来ServerRequests.class中的returnedUser将user.username放在电子邮件应该放在的位置,因为您已将其声明为

public User(String username,String email , int age, String password)
上面写着

returnedUser = new User(username,  user.username, age, user.password);

在另一个文件中。

答案很简单,在my register.php中,它被写为“siss”,而不是“ssis”,因此它被视为一个int

mysqli_stmt_bind_param($statement, "siss", $username, $email, $age,  $password);
正确的一点:

mysqli_stmt_bind_param($statement,“ssis”、$username、$email、$age、$password)


很抱歉,我应该提供它(php文件),难怪我没有得到解决方案。

使用
returnedUser=new User(User.username、email、age、User.password)更改了它
但仍然不好您在数据库中为电子邮件注册了什么数据类型?如果它是Int(误取),这可能解释它是toovarchar(50)拉丁文1_瑞典文1_cian,这条线着火了?日志v(“已发生”、“2”);没有,但即使我删除它也不会改变任何东西。