Я пытаюсь обновить базу данных MySQL, используя php из приложения для Android. Я успешно смог обновить базу данных и вернуть данные из базы данных, используя этот учебник, который я нашел здесь: http://www.helloandroid.com/tutorials/connecting-mysql-database
Я сейчас пытаюсь обновить базу данных, используя поставщика местоположения, чтобы получить широту и долготу исправления местоположения, которое я получаю через обратный вызов onLocationChanged. Мой код выглядит так:
public void onLocationChanged(Location location) {
double myLonDouble = location.getLongitude();
String myLon = Double.toString(myLonDouble);
double myLatDouble = location.getLatitude();
String myLat = Double.toString(myLatDouble);
sp = getSharedPreferences("MyPrefsFile", 0);
id = sp.getInt("id", 0);
String idString = Integer.toString(id);
DatabaseConnector db = new DatabaseConnector();
ArrayList<NameValuePair> latLon = new ArrayList<NameValuePair>();
latLon.add(new BasicNameValuePair("longitude", myLon));
latLon.add(new BasicNameValuePair("latitude", myLat));
latLon.add(new BasicNameValuePair("id", idString));
tv.setText(idString);
db.dbConnect(latLon, php);
}
Метод dbConnect, который отправляет мои данные в php-файл, выглядит следующим образом:
public void dbConnect(ArrayList<NameValuePair> data, String phpFile) {
InputStream is = null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(phpFile);
httppost.setEntity(new UrlEncodedFormEntity(data));
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());
}
}// end dbConnect
Файл php, который я использую в объекте httppost, выглядит следующим образом:
>><?php
>>$con = mysql_connect("localhost","********","*********");
>>if (!$con)
>> {
>> die('Could not connect: ' . mysql_error());
>> }
>>
>>mysql_select_db("swizzle_practice", $con);
>>
>>$_SQL =
>>"UPDATE users
>>SET longitude = '$_REQUEST[longitude]', latitude = '$_REQUEST[latitude]'
>>WHERE id = '$_REQUEST[id]'";
>>
>>mysql_query($_SQL,$con) or die("error: " . mysql_error());
>>
>>mysql_close($con)
>>?>
Мой манифест выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.first_screen"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-sdk android:minSdkVersion="7" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<uses-library android:name="com.google.android.maps" />
<activity android:name=".First_screenActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Setup"
android:label="@string/app_name">
</activity>
<activity android:name=".Map"
android:label="@string/app_name">
</activity>
</application>
</manifest>
Я не получаю никаких ошибок в журнале, что заставляет меня думать, что это мой код в
неправильный метод dbConnect. Я просмотрел это и не могу понять, что я делаю неправильно.
Любая помощь, которую вы можете оказать, будет очень признательна.
Louis