2017-10-02 1 views
0

Ich arbeite gerade an einer Android-App und habe ein Anmelde- und Anmeldeformular für Android erstellt.Warum ist der Benutzername in der Datenbank als null registriert?

Das einzige Problem ist, dass der Benutzername immer als 0.

deklariert Ich hoffe, dass Sie mich verstehen und mich kann auch helfen!

MySql output

PHP-Code: http://textuploader.com/djedy

[EDIT]

android-Studio Code:

public class RegisterActivity extends AppCompatActivity { 

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

    final EditText etAge = (EditText) findViewById(R.id.etAge); 
    final EditText etName = (EditText) findViewById(R.id.etName); 
    final EditText etUsername = (EditText) findViewById(R.id.etUsername); 
    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 int age = Integer.parseInt(etAge.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("Register Failed") 
            .setNegativeButton("Retry", null) 
            .create() 
            .show(); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }; 

      RegisterRequest registerRequest = new RegisterRequest(name, username, age, password, responseListener); 
      RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this); 
      queue.add(registerRequest); 
     } 
    }); 
} 

}

+0

Können wir mehr vom Code sehen? Sie fordern einen POST an, aber wir sehen nur, dass Sie nach dem Namen fragen. – Tomm

+0

Fragen zur Fehlersuche ("Warum funktioniert dieser Code nicht?") Müssen das gewünschte Verhalten, ein bestimmtes Problem oder einen Fehler und den kürzesten Code enthalten, der für die Reproduktion in der Frage selbst erforderlich ist **. Fragen ohne eine klare Problemstellung sind für andere Leser nicht nützlich. Siehe: [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels.] (Https://stackoverflow.com/help/mcve) – apokryfos

Antwort

1

Sie binden den Benutzernamen als Integer Wert.

mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password); 

Meine Annahme ist, dass Sie stattdessen Ihr $ age einen interger Wert binden möchten?

Versuchen Sie, die oben auf dieser Wechsel:

mysqli_stmt_bind_param($statement, "ssis", $name, $username, $age, $password); 

hoffe, das hilft!


EDIT: Hoffentlich testen Sie einfach und wird dies umzusetzen, aber Sie NEED Ihre Passwörter Hashing sein!

Bitte schauen Sie in diese: http://php.net/manual/en/function.crypt.php

und starten Sie den password_hash mit() und password_verify() Funktionen als Teil Ihrer Anmeldung/Registrierung Skripte.

+0

Es tut mir leid, aber ich sehe keinen Unterschied in Ihrem Code:/ – Samuel

+0

siss => ssis. Ich ändere die Intergerbindung an das Altersfeld und setze den Benutzernamen auf eine Zeichenkettenbindung. – JParkinson1991

+0

Große Antwort! Er hat die siss geändert, weil du username = integer gesagt hast. – Tomm

Verwandte Themen