AsyncHttpClient没有将值传递给php

时间:2013-02-21 10:54:26

标签: php android mysql android-async-http getmethod

您好我使用php将我的Android应用程序连接到mysql但是get方法没有将值传递给php文件。

这是我的代码。

private void executeAjaxRequest(){

       String url = mDataUrl+"?request="+mRequest+"&outlet_id="+mOutletID;
       Log.v("url",url);
      System.out.println("This is StoreActivity " +url);

       AsyncHttpClient httpclient = new AsyncHttpClient();
       httpclient.get(url, new AsyncHttpResponseHandler() {
         @Override
         public void onSuccess(String response) {
            setOutletData(response);
            Log.i("TAG",response);
         }
       });
     }

它应该将outletid和mrequest传递给php文件以从数据库中获取数据。

你能告诉我哪里出错了。

error_reporting(0);

    //$url = $_GET['url'];
    $mR = $_GET["mRequest"];
    $mOid = $_GET["mOutletID"];
    //$mloc = $_GET['mLocation'];
    //connect to the db
    //echo $mOid;
    $user = "root";
    $pswd = "";
    $db = "recommendations_db";
    $host = "localhost";
    $conn = mysql_connect($host, $user, $pswd);
    mysql_select_db($db);
    //if($mR == 'outlets' && $mloc = 'all'){
    $query = "SELECT outlet_id,outlet_name,outlet_location,outlet_image FROM outlets WHERE outlet_id = '$mOid'";
    $result = mysql_query($query) or die("Unable to execute query because : " . mysql_error());
    //echo $result ." ". $mOid;
    while($row = mysql_fetch_assoc($result))
    {
      $query2 = "SELECT a.item_id,a.item_name,a.item_image FROM items a,outlets b,recommendations c WHERE a.item_id = c.item_id AND b.outlet_id = c.outlet_id AND b.outlet_id = ".$row['outlet_id'];
       $row['recommended_products']=array();

        $result2 = mysql_query($query2) or die("Unable to execute query because : " . mysql_error());
        //echo $row;
        while($row2 = mysql_fetch_assoc($result2)){
            $row['recommended_products'][]=$row2;
            //echo $row;
        }

      $output[] = $row; 
    }
    print( json_encode($output) );
    mysql_close($conn);

1 个答案:

答案 0 :(得分:0)

您是否可以检索服务器上的requestoutletid?如果请求确实是SQL请求,则应对其进行url编码,以避免使用某些可能“危险”的字符截断URL。

您应该从onFailure覆盖方法AsyncHttpResponseHandler以处理任何可能的错误。您还可以尝试使用RequestParams而不是将参数及其值放在URL中。您可以像这样使用它们:

    RequestParams params = new RequestParams();
    params.put("request", "mRequest");
    params.put("outlet_id", "mOutletID");
    AsyncHttpClient client = new AsyncHttpClient();
    client.get("URL", params, new AsyncHttpResponseHandler() {

        @Override
        public void onFailure(Throwable arg0, String arg1) {
            // Handle the error
        }

        @Override
        public void onSuccess(String arg0) {
            // Do stuff with the result
        }
    });