Отправка и получение данных через в\из MySQL + PHP на Android
возникла необходимость производить отправку различных данных в базу данных MySQL из приложения Android, решил использовать связку MySQL + PHP для взаимодействия, походил по интернетам, почитал информацию был найден и скоректирован некоторый класс для данного действия, однако должным для меня образом он не работает.
Мне необходимо отправить через некоторый AsyncTask отправить данные на PHP скрипт, в запросе есть 2 переменных, это ID по которому необходимо найти нужный мне row и значение одной из переменных в нужном мне row.
Сам класс выглядит так:
private class DownloadsAPISet extends AsyncTask<String, Void, String> {
ProgressDialog mProgressDialog;
private String res;
@Override
protected void onPreExecute() {
mProgressDialog = ProgressDialog.show(AnimeActivity.this, "Система", "Пожалуйста подождите...");
}
@Override
protected String doInBackground(String... params) {
res = null;
PutUtility put = new PutUtility();
put.setParam("mod_id", params[0].toString());
put.setParam("actreaders", params[1].toString());
try {
res = put.postData("https://test.com/tool.php");
Log.v("res", res);
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
protected void onPostExecute(String res) {
// Выполним тут получение чуть позже
}
}
Сам PHP выглядит так:
<?php
include('mysql.php');
$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error)
{
die("Connection failed: " . $conn->connect_error);
}
$conn->set_charset('utf8');
$return_arr = array();
$ModificationID=($_POST['mod_id']);
$ActiveReaders=($_POST['actreaders']);
$sql_download_update = "INSERT INTO 'repos'('actreaders') values (NULL,'".$ActiveReaders."')";
$result_rower = $conn->query($sql_download_update);
$row_array['errorcode1'] = 1;
?>
Проблема в том, что я не понимаю, как мне в PHP выбрать именно нужный мне row и обновить его значение, а потом уже с Android обновить эти данные.
Прошу произвести разъяснение, заранее всем благодарем (( касательно возможной глупости вопроса: изучением Java и Android занимаюсь только 3-ий месяц, а PHP никогда до этого не использовал )) Заранее всех благодарю.
Ответы (1 шт):
Ваш скрипт может только производить вставку данных в БД.
За это отвечает запрос INSERT, за изменение данных в БД будет отвечать запрос UPDATE с условием выборки WHERE id = {$_GET|$_POST}, где {$_GET|$_POST} - это параметр определяющий конкретную строку в БД.
Предполагаю что Вам следует проверить сперва существование строки и после выполнять нужный запрос.
Скрипт одержит вид:
<?php
include('mysql.php');
$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error) die("Connection failed: " . $conn->connect_error);
$conn->set_charset('utf8');
$return_arr = array();
$ModificationID=($_POST['mod_id']);
$ActiveReaders=($_POST['actreaders']);
$check_sql = "SELECT Count(id) FROM repos WHERE id = ".$ModificationID;
$check = $conn->query($check_sql);
if(!$check) $sql_download_update = "INSERT INTO repos values (NULL,'".$ActiveReaders."')";
else $sql_download_update = "UPDATE repos SET actreaders=".$ActiveReaders." WHERE id=".$ModificationID;
$result_rower = $conn->query($sql_download_update);
$row_array['errorcode1'] = 1;
?>