Обновление базы данных MySQL с помощью PHP через Android - PullRequest
1 голос
/ 20 июля 2011

Я пытаюсь обновить базу данных 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

Ответы [ 3 ]

1 голос
/ 20 июля 2011

Добавить '$_REQUEST['longitude']', как сейчас?Зарегистрируйте nameValuePairs, чтобы проверить правильность значений пар.

$_SQL = 
"UPDATE users 
SET longitude = '$_REQUEST['longitude']', latitude = '$_REQUEST['latitude']'
WHERE id = '$_REQUEST['id']';"; 

PS: Я предлагаю проверить ваш php-код и ваш запрос с вручную введенными значениями.И вам не нужно response, так как вы выполняете операцию, которая не имеет ничего общего с вашим приложением после отправки пар ключ-значение-пара, т.е. ваш запрос не извлекает никаких данных.Вы можете получить его и использовать для вывода, выполнил ли ваш запрос работу или нет.

1 голос
/ 20 июля 2011

Вы можете проверить, какие данные получил ваш скрипт, используя

foreach ($_POST as $var => $value) { 
  echo "$var = $value<br>n"; 
} 

В вашем скрипте php.

0 голосов
/ 20 июля 2011

Ну, я не очень хорошо разбираюсь в PHP, но из того, что я вижу ... вы обращаетесь к переменной запроса из _REQUEST, но вы устанавливаете запрос с помощью HttpPost.

Проще говоря, вы устанавливаете запрос POST, но извлекаете переменную на стороне сервера как запрос GET. Чтобы это исправить, либо заставьте клиента отправлять запрос GET, либо переменную запроса доступа на стороне сервера от _POST

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...