2017-09-20 2 views
1

Ich versuche zu verstehen, wie Benutzerdetails in der Server-Datenbank gespeichert werden. Obwohl ich ein Video ansehe und die Schritte wie erwähnt befolge, kann ich Name, Passwort und Dob speichern, aber das E-Mail-Feld zeigt immer 0 an. Bitte sagen Sie mir, wo das Problem ist, kann ich nicht verstehen. Unten ist mein Code.E-Mail-Feld wird nicht in der Datenbank gespeichert - Android-Anmeldeseite

register.php

<?php 
$con = mysqli_connect("my_host", "db_user", "db_password", "my_db"); 
$name = $_POST["name"]; 
$email = $_POST["email"]; 
$password = $_POST["password"]; 
$dob = $_POST["dob"]; 
$statement = mysqli_prepare($con, "INSERT INTO user (name, email, password, dob) VALUES (?, ?, ?, ?)"); 
mysqli_stmt_bind_param($statement, "siss", $name, $email, $password, $dob); 
mysqli_stmt_execute($statement); 
$response = array(); 
$response["success"] = true; 
echo json_encode($response); 
?> 

ich Volley verwende dafür.

RegisterRequest.class

public class RegisterRequest extends StringRequest { 

private static final String REQUEST_REGISTER_URL = "http://www.myhostingaddress/register.php"; 
private Map<String, String> params; 

public RegisterRequest(String name, String email, String password, String dob, Response.Listener<String> listener){ 
    super(Method.POST, REQUEST_REGISTER_URL,listener,null); 
    params = new HashMap<>(); 
    params.put("name", name); 
    params.put("email", email); 
    params.put("password", password); 
    params.put("dob",dob); 
} 

@Override 
public Map<String, String> getParams() { 
    return params; 
} 
} 

und meine Haupt Registrierung Aktivität

Register.class

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sign_up); 

    name = (EditText) findViewById(R.id.name); 
    eemail = (EditText) findViewById(R.id.email); 
    password = (EditText) findViewById(R.id.password_signup); 
    dob = (EditText) findViewById(R.id.DOB); 
    register_btn = (Button) findViewById(R.id.Signup); 

    register_btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final String Name = name.getText().toString(); 
      final String Email = eemail.getText().toString(); 
      final String Password = password.getText().toString(); 
      final String Dob = dob.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){ 
          Toast.makeText(Sign_up.this, "Account Created, Login now !", Toast.LENGTH_SHORT).show(); 
          startActivity(new Intent(Sign_up.this,Login_Page.class)); 
         } else { 
          Toast.makeText(Sign_up.this, "Registration Failed, Try Again !", Toast.LENGTH_SHORT).show(); 
         } 

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

      RegisterRequest registerRequest = new RegisterRequest(Name,Email,Password,Dob,responseListener); 
      RequestQueue queue = Volley.newRequestQueue(Sign_up.this); 
      queue.add(registerRequest); 
     } 
    }); 
} 
} 
+1

Werfen Sie einen Blick auf Ihre zweite Spalte und das zweite Argument, das Sie in der Bindung übergeben haben. –

+0

** Speichern Sie niemals Nur-Text-Passwörter! ** Verwenden Sie *** PHPs [integrierte Funktionen] (http://jayblanchard.net/proper_password_hashing_with_PHP.html) ***, um die Passwortsicherheit zu behandeln. Wenn Sie eine PHP-Version kleiner als 5.5 verwenden, können Sie das 'password_hash()' [compatibility pack] (https://github.com/ircmaxell/password_compat) verwenden. *** Es ist nicht notwendig, [Passwörter zu entkommen] (http://stackoverflow.com/q/36628418/1011527) *** oder benutzen Sie einen anderen Bereinigungsmechanismus vor dem Hashing. Wenn Sie dies tun, * ändert * das Passwort und verursacht unnötige zusätzliche Codierung. –

+0

Danke für Ihre Hilfe. Problem ist jetzt gelöst. –

Antwort

1

Die Antwort ist einfach, verwendet man eine i (integer) anstelle eines s (String) für die email Spalte im bind_param() Argument. Ich bezweifle ernsthaft, dass das eine ganze Zahl ist.

Sie auch sicherstellen, dass die email Spalte Typ ist in der Tat ein Typ, der eine Zeichenfolge speichern kann.

Ändern Sie daher siss in ssss für alle Zeichenfolgen.

Verwandte Themen