android — параметр POST для php с использованием AsyncHttpClient

Я хочу удалить строку из моей базы данных, используя MySQL. Мне нужно передать параметр, который я хочу удалить из моего приложения Android, в скрипт php. Я использую AsyncHttpClient, но ничего не происходит, я получаю сообщение ОК в своем журнале.

Я пытался изменить значение username="$name" в моем PHP-сценарии к существующему значению в таблице, и он работает правильно, строка удаляется. Я думаю, что моя ошибка в передаче значения из Android в php.

скрипт deleteuser.php:

<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'root';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}

$name = $_GET["username"];

$sql = 'DELETE FROM usuarios
WHERE username="$name"';

mysql_select_db('etsiitcast_db');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not delete data: ' . mysql_error());
}
echo "Deleted data successfully\n";
mysql_close($conn);
?>

Код Android:

 final AsyncHttpClient client = new AsyncHttpClient();

Button delete = (Button) rootView.findViewById(R.id.delete);
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

RequestParams params = new RequestParams();
params.put("username", user);

client.post("http://" + IP_Server + "/etsiitcast_db/deleteuser.php", params, new AsyncHttpResponseHandler() {

@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.d("OK", "Usuario eliminado");
getActivity().finish();
}

@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Log.d("ERROR", "Se ha producido un error al eliminar al usuario");
}
});
}
});

куда user Строка, значением которой является имя пользователя:

Bundle extras = getActivity().getIntent().getExtras();

if (extras != null){
user = extras.getString("user");
} else {
user = "error";
}

ОБНОВИТЬ:

В моем коде Android я изменил эту строку:

client.get("http://" + IP_Server + "/etsiitcast_db/deleteuser.php", params, new AsyncHttpResponseHandler() { [...] }

Новый скрипт php:

<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'root';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysqli_error());
}

$name = $_GET["username"];
$name = $mysqli->real_escape_string($name);

$sql = 'DELETE FROM usuarios
WHERE username="$name"';

mysqli_select_db('etsiitcast_db');
$retval = mysqli_query( $sql, $conn );
if(! $retval )
{
die('Could not delete data: ' . mysqli_error());
}
echo "Deleted data successfully\n";
mysqli_close($conn);
?>

0

Решение

В вашем приложении Android вы используете client.post который генерирует POST Команда для веб-сервера. Однако в вашем PHP-скрипте вы ищете $_GET значение.

Вы должны либо изменить приложение Android, чтобы сделать client.get ИЛИ ваш PHP-скрипт для доступа $_POST['username'],

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector