您好我使用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);
答案 0 :(得分:0)
您是否可以检索服务器上的request
和outletid
?如果请求确实是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
}
});