1

当通过 android 向 php 服务器发送数据时,我遇到了这个错误:“注意:未定义的索引:IT in C:\xampp\htdocs\hello.php on line 4”。搞砸了几个小时后,我无法解决我的问题。

你好.php:

<?php
mysql_connect("localhost","user","pass");
mysql_select_db("mmo");
$r=mysql_query("update players set X = '".$_REQUEST['IT']."' where 22=22");
if(!$r)
echo "Error in query: ".mysql_error();
mysql_close();
header('Refresh: 0.01; URL=http://localhost/hello.php');
?>

android中的更新方法:

public void UpdateSeverWithPlayer()
{List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();  
nameValuePairs.add(new BasicNameValuePair("IT","3"));
try{
     HttpClient httpclient = new DefaultHttpClient();
     HttpPost httppost = new HttpPost("http://10.0.2.2/hello.php");
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

     HttpResponse response = httpclient.execute(httppost);
     HttpEntity entity = response.getEntity();
     is = entity.getContent();
     }catch(Exception e){
         Log.e("log_tag", "Error in http connection"+e.toString());
    }}

我正在使用 android 模拟器并且确实拥有互联网许可。一如既往的帮助非常感谢。编辑1:看来问题出在android而不是php代码中。

4

1 回答 1

1

你没有以某种方式正确地发送你的查询字符串,所以$_REQUEST['IT']在 PHP 端没有。做一个var_dump($_REQUEST)看看发生了什么。或者更好的是,不要使用 $_REQUEST。这有点不安全。最好使用与您的 HTTP 方法直接相关的超全局变量 _GET 或 _POST。

同样,Refresh标题是非标准的。它会起作用,但你不应该依赖它。HTTP 级别重定向使用 Location: 标头。Refresh:是一个非标准的老式 Netscape 扩展。

于 2012-05-10T02:54:24.323 回答