2016-04-15 13 views
0

bekam ich den Fehler auf dieser Linie:Android Datenbank von Typ java.lang.String kann nicht in JSONObject umgewandelt werden

JSONObject jsonResponse = new JSONObject(response); 

Was ich denke, es gibt Fehler auf der PHP-Datei. Aber ich kann nicht herausfinden, was das Problem in meinem PHP-Code ist.

<?php 
    require "init.php"; 
    require "password.php"; 

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

    $statement = mysqli_prepare($con, "SELECT * FROM User WHERE username = ?"); 
    mysqli_stmt_bind_param($statement, "s", $username); 
    mysqli_stmt_execute($statement); 
    mysqli_stmt_store_result($statement); 
    mysqli_stmt_bind_result($statement, $colNo, $colUsername, $colPassword, $colName, $colHpno, $colUser_state); 

    $response = array(); 
    $response["success"] = false; 

    while(mysqli_stmt_fetch($statement)) { 
     if (password_verify($password, $colPassword)) { 
      $response["success"] = true; 
      $response["username"] = $colUsername; 
      $response["name"] = $colName; 
      $response["hpno"] = $colHpno; 
     } 
    }; 

    echo json_encode($response); 
?> 

Einige Leute haben mir gesagt, dass ich die falsche Reihenfolge für die mysqli_stmt_bind_result bekam, aber ich habe die Reihenfolge, in der Datenbanktabelle gefolgt.

Logcat:

04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: org.json.JSONException: Value <br><h3>Database of type java.lang.String cannot be converted to JSONObject 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at org.json.JSON.typeMismatch(JSON.java:111) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:160) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:173) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at wqyap762.rprqs.LoginActivity$3.onResponse(LoginActivity.java:91) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at wqyap762.rprqs.LoginActivity$3.onResponse(LoginActivity.java:86) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at android.os.Handler.handleCallback(Handler.java:739) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:95) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at android.os.Looper.loop(Looper.java:135) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5254) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at java.lang.reflect.Method.invoke(Method.java:372) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
+0

den json Text einfügen. – drulabs

Antwort

0

Sie versuchen können, wie etwas, was zu verwenden:

new JSONObject("{your string}") 

wenn es noch throw Fehler ist dann könnte es möglich, Problem ist in Server-Seite Antwort.

Überprüfen Sie die Antwort des Servers im Browser, wenn es in Ordnung ist, dann überprüfen Sie, was Elternobjekt ist. so etwas wie,

[ 
    { 
    "success":true, 
    "username":"data", 
    "name":"name", 
    "hpno":"hpno" 
    } 
] 

dann hier erstes Element Array '[', bedeutet in diesem Fall, wenn es Sie sollten Code unten,

JSONArray array = new JSONArray(response); 
for(int i=0;i<array.length;i++){ 
    JSONObject obj = array.getJSONObject(i); 
} 
+0

Ich habe den Fehler gefunden. Es ist in der init.php, wo ich etwas widerspreche. Nachdem ich es entfernt habe, funktioniert es. –

Verwandte Themen