2016-06-12 23 views
2

Ich möchte eine Benutzerregistrierungsseite mit Volley machen, aber ich bin nicht in der Lage, Daten an den Server zu senden. Es ist das erste Mal, dass ich Volley spiele. Ich habe alle Berechtigungen eingeschlossen und der Server läuft ebenfalls ordnungsgemäß. Ich kann die Daten nicht an die Online-Datenbank senden.Nicht möglich, Daten an den Server mit Volley android senden

Wenn ich es laufen, gibt es die folgende Meldung: "Warnung MySQLi prepare() erwartet Parameter 1 Mysqli, boolean in nach Hause gegeben werden ..."

Bitte helfen. Hier ist mein Android-Code: Benutzerklasse enthält Zeichenfolge aus Name, Benutzername, Handy, Passwort.

private void registerUser(final User user) { 
    StringRequest stringRequest = new StringRequest(Request.Method.POST, SERVER_ADDRESS + "Register.php", 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        Toast.makeText(Register.this,response,Toast.LENGTH_LONG).show(); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(Register.this,error.toString(),Toast.LENGTH_LONG).show(); 
       } 
      }){ 
     @Override 
     protected Map<String,String> getParams(){ 
      Map<String,String> params = new HashMap<String, String>(); 
      params.put("name",user.name); 
      params.put("username", user.username); 
      params.put("mobile", user.mobile); 
      params.put("password", user.password); 
      Log.d(name+username+"her", "her"); 
      return params; 
     } 
    }; 

    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(stringRequest); 

} 
} 

Und hier ist die PHP-Datei:

<?php 

if($_SERVER['REQUEST_METHOD']=='POST'){ 
$con=mysqli_connect("localhost","dbName","pass","userName"); 

$name = $_POST["name"]; 
$username = $_POST["username"]; 
$mobile = $_POST["mobile"]; 
$password = $_POST["password"]; 

$statement = mysqli_prepare($con, "INSERT INTO UserDetails (name, username, mobile, password) VALUES (?, ?, ?, ?)"); 
mysqli_stmt_bind_param($statement, "ssss", $name, $username, $mobile, $password); 
mysqli_stmt_execute($statement); 
echo $name, $username, $mobile, $password; 
mysqli_stmt_close($statement); 

mysqli_close($con);} 
?> 

Antwort

0

Sie müssen die Warteschlange starten, bevor sie eine Anfrage ihm hinzufügen.

RequestQueue requestQueue = Volley.newRequestQueue(this); 
requestQueue.start() 
requestQueue.add(stringRequest); 

Bitte stellen Sie sicher, dass Sie Start() aufrufen, nur einmal. Erstellen Sie daher eine Singleton-Klasse "VolleyManager". Wenn Sie eine Instanz dieser Klasse erstellen, sollte sie eine Anforderungswarteschlange erstellen und sie starten. Für jeden API-Aufruf rufen Sie einfach VolleyManager.getInstance(). GetQueue(). Add (stringRequest)

0

global $ con

in Ihrer PHP-Datei hinzufügen.

Verwandte Themen