2015-10-10 38 views
1

我想从MySql数据库获取数据。 这是PHP代码:排球,json和php连接

<?php 

if($_SERVER["REQUEST_METHOD"]=="POST"){ 
    include 'connection.php'; 
    showStudent(); 
} 

function showStudent(){ 
    global $connect; 

    $query = " Select * FROM utenti"; 

    $result = mysqli_query($connect, $query); 
    $number_of_rows = mysqli_num_rows($result); 

    $temp_array = array(); 

    if($number_of_rows > 0) { 
     while ($row = mysqli_fetch_assoc($result)) { 
      $temp_array[] = $row; 
     } 
    } 

    header('Content-Type: application/json'); 
    echo json_encode(array("utenti"=>$temp_array)); 
    mysqli_close($connect); 

} 

?> 

这是用于获取数据的方法:

public static String mostraDati(){ 

    final String[] result = new String[50]; 

    System.out.println("ww"); 
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, DatiNet.MostraDati, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
      System.out.println("fin qui ci siamo"); 
      try { 

       JSONArray utenti = response.getJSONArray("utenti"); 


       for (int i = 0; i < utenti.length(); i++) { 
        JSONObject student = utenti.getJSONObject(i); 

        String nome = student.getString("nome"); 
        String cognome = student.getString("cognome"); 
        String numero = student.getString("numero"); 
        String email = student.getString("email"); 

        result[i] = nome + " " + cognome + " " + email + "\n"; 
       } 

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

     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      System.out.append(error.getMessage()); 

     } 
    }); 
    requestQueue.add(jsonObjectRequest); 

    return result[0]; 
} 

当我执行他们的应用程序崩溃..

这是日志:

10-10 19:45:26.363 4373-4373/com.rete.prova.ale.reteale E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.rete.prova.ale.reteale, PID: 4373 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rete.prova.ale.reteale/com.rete.prova.ale.reteale.MostraDati}: java.lang.NullPointerException: Attempt to invoke virtual method 'com.android.volley.Request com.android.volley.RequestQueue.add(com.android.volley.Request)' on a null object reference 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:148) 
     at android.app.ActivityThread.main(ActivityThread.java:5417) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.android.volley.Request com.android.volley.RequestQueue.add(com.android.volley.Request)' on a null object reference 
     at com.rete.prova.ale.reteale.Rete.mostraDati(Rete.java:98) 
     at com.rete.prova.ale.reteale.MostraDati.onCreate(MostraDati.java:20) 
     at android.app.Activity.performCreate(Activity.java:6237) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 

at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
            at android.app.ActivityThread.-wrap11(ActivityThread.java) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:148) 
            at android.app.ActivityThread.main(ActivityThread.java:5417) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

问题在哪里? 我已经宣布结果最终,因为编辑强迫我,但一个常数不能改变吗?

+0

申报结果的方法之外,并与ArrayList的更换它比静态数组 –

+0

好,但这不是导致崩溃的原因 –

回答

0

试试这个:

private static List<String> result = new ArrayList<String>(); 
public static void mostraDati(){ 

    System.out.println("ww"); 
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, DatiNet.MostraDati, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
      System.out.println("fin qui ci siamo"); 
      try { 

       JSONArray utenti = response.getJSONArray("utenti"); 


       for (int i = 0; i < utenti.length(); i++) { 
        JSONObject student = utenti.getJSONObject(i); 

        String nome = student.getString("nome"); 
        String cognome = student.getString("cognome"); 
        String numero = student.getString("numero"); 
        String email = student.getString("email"); 
      result.add(nome + " " + cognome + " " + email); // or use StringBuilder to create string! 
       } 

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

     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      System.out.append(error.getMessage()); 

     } 
    }); 
} 

显示数据使用:

for(String s : result) 
{ 
    System.out.println(s); 
} 

尝试这个PHP请求:

<?php 
mysql_connect("localhost","root","password"); 
mysql_select_db("DBName"); 
$q=mysql_query("SELECT * FROM utenti"); 
while($e=mysql_fetch_assoc($q)) 
     $output[]=$e; 

print(json_encode($output)); 

mysql_close(); 
?> 
+1

最后? http://prntscr.com/8pxy6o –

+0

我已经更新了代码,现在检查它:D –

+0

现在不会崩溃但不起作用! :(我正在一天搜索!哈哈看看:http://prntscr.com/8py55v当我按下按钮谁调用方法 –