Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP POST方法将gps数据从android应用程序正确上传到XAMPP MYSQL?_Php_Android_Mysql_Sql_Apache - Fatal编程技术网

如何使用PHP POST方法将gps数据从android应用程序正确上传到XAMPP MYSQL?

如何使用PHP POST方法将gps数据从android应用程序正确上传到XAMPP MYSQL?,php,android,mysql,sql,apache,Php,Android,Mysql,Sql,Apache,我在这里读了很多关于这个问题的问题,但似乎不太理解我的问题 我制作了一个简单的android应用程序,当按下屏幕上的按钮时,它会检索位置数据。这会在一个Toast小部件中弹出,但它并没有像我想的那样提交给MySQL数据库 我正在使用apache.http.client并使用POST发送数据(通过wifi网络) 代码如下: package com.example.GpsTest; import java.io.IOException; import java.util.ArrayList; im

我在这里读了很多关于这个问题的问题,但似乎不太理解我的问题 我制作了一个简单的android应用程序,当按下屏幕上的按钮时,它会检索位置数据。这会在一个Toast小部件中弹出,但它并没有像我想的那样提交给MySQL数据库

我正在使用apache.http.client并使用POST发送数据(通过wifi网络)

代码如下:

package com.example.GpsTest;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class GpsTestActivity extends Activity {
    //Set parameters for location updates
    private static final long minimumDistanceChangeBeforeUpdate = 10; //Meters
    private static final long minimumUpdatePeriod = 10000; //In Milliseconds

    protected LocationManager locationManager;
    protected Button gpsRequestButton;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        gpsRequestButton = (Button) findViewById(R.id.gpsRequestButton);
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minimumUpdatePeriod, minimumDistanceChangeBeforeUpdate, new MyLocationListener());

    gpsRequestButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            showCurrentLocation();
        }
    });
    }   

    protected void showCurrentLocation() {
        Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        if (location != null){
            String alert = String.format("Location \n Longitude: %1$s \n Latitude: %2$s", location.getLongitude(), location.getLatitude());
            Toast.makeText(GpsTestActivity.this, alert, Toast.LENGTH_LONG).show();
        }
    }

    private class MyLocationListener implements LocationListener {
        public void onLocationChanged(Location location) {
            String alert = String.format("Location Updated \n Longitude: %1$s \n Latitude: %2$s", location.getLongitude(), location.getLatitude());
            Toast.makeText(GpsTestActivity.this, alert, Toast.LENGTH_LONG).show();
            postData(location);
        }

        public void onStatusChanged(String s, int i, Bundle b){
            Toast.makeText(GpsTestActivity.this, "Provider Status Updated", Toast.LENGTH_LONG).show();
        }

        public void onProviderDisabled(String s) {
            Toast.makeText(GpsTestActivity.this, "GPS Deactivated", Toast.LENGTH_LONG).show();
        }

        public void onProviderEnabled(String s) {
            Toast.makeText(GpsTestActivity.this, "GPS Activated", Toast.LENGTH_LONG).show();
        }
        public void postData(Location location) {
            // Create a new HttpClient and Post Header
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("192.168.1.229/appTesting/gpsdb.php");
            try {
                // Add your data
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                nameValuePairs.add(new BasicNameValuePair("gpsLastKnown","location"));
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                // Execute HTTP Post Request
                HttpResponse response = httpclient.execute(httppost);
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
            } catch (IOException e) {
                // TODO Auto-generated catch block
            }
        } 
}}
package com.example.GpsTest;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入org.apache.http.HttpResponse;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.ClientProtocolException;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.message.BasicNameValuePair;
导入android.app.Activity;
导入android.content.Context;
导入android.location.location;
导入android.location.LocationListener;
导入android.location.LocationManager;
导入android.os.Bundle;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.Toast;
公共类GpsTestActivity扩展活动{
//设置位置更新的参数
私有静态最终最小长距离ChangeBeforeUpdate=10;//米
private static final long minimumUpdatePeriod=10000;//以毫秒为单位
受保护的LocationManager LocationManager;
受保护按钮gpsRequestButton;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gpsRequestButton=(Button)findviewbyd(R.id.gpsRequestButton);
locationManager=(locationManager)getSystemService(Context.LOCATION\u服务);
locationManager.requestLocationUpdates(locationManager.GPS_提供程序,minimumUpdatePeriod,minimumDistanceChangeBeforeUpdate,new MyLocationListener());
gpsRequestButton.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
showCurrentLocation();
}
});
}   
受保护的void showCurrentLocation(){
Location Location=locationManager.getLastKnownLocation(locationManager.GPS\U提供程序);
如果(位置!=null){
String alert=String.format(“位置\n经度:%1$s\n纬度:%2$s”,Location.getLongitude(),Location.getLatitude());
Toast.makeText(GpsTestActivity.this、alert、Toast.LENGTH_LONG.show();
}
}
私有类MyLocationListener实现LocationListener{
已更改位置上的公共无效(位置){
String alert=String.format(“位置更新\n经度:%1$s\n经度:%2$s”,Location.getLongitude(),Location.getLatitude());
Toast.makeText(GpsTestActivity.this、alert、Toast.LENGTH_LONG.show();
postData(位置);
}
状态已更改的公共void(字符串s、整数i、束b){
Toast.makeText(GpsTestActivity.this,“提供程序状态已更新”,Toast.LENGTH_LONG.show();
}
公共无效onProviderDisabled(字符串s){
Toast.makeText(GpsTestActivity.this,“GPS停用”,Toast.LENGTH_LONG.show();
}
已提供已启用的公共void(字符串s){
Toast.makeText(GpsTestActivity.this,“GPS激活”,Toast.LENGTH_LONG.show();
}
公共void postData(位置){
//创建一个新的HttpClient和Post头
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost-HttpPost=newhttppost(“192.168.1.229/appTesting/gpsdb.php”);
试一试{
//添加您的数据
List nameValuePairs=新的ArrayList(2);
添加(新的BasicNameValuePair(“gpslatKnown”、“location”);
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
//执行HTTP Post请求
HttpResponse response=httpclient.execute(httppost);
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
}捕获(IOE异常){
//TODO自动生成的捕捉块
}
} 
}}
下面是我正在使用的简单PHP脚本:

<?php
$con = mysql_connect("localhost","root","************");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("3dprotect", $con);

$sql="INSERT INTO gps (gpsLastKnown)
VALUES
('$_POST[gpsLastKnown]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con);
?> 

尝试将大括号添加到$\u POST数组中

$sql="INSERT INTO gps (gpsLastKnown)
VALUES
('{$_POST[gpsLastKnown]}')";

另外,您可以记录发送到服务器的确切内容。IE所有的HTTP流量

好的,修复了PHP中的一些问题,这样现在就不会出现错误(获取T_变量错误)如下所示的新PHP