我想使用MySQL从我的数据库中删除一行。我需要将我想从我的Android应用程序中删除的参数传递给php脚本。我使用的是AsyncHttpClient,但没有发生,我在日志中收到了一条确定的消息。使用AsyncHttpClient将参数POST参数到
我已经尝试将我的php脚本中的值username="$name"
更改为表中的现有值,并且它工作正常,行被删除。我认为我的错误是将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";
}
UPDATE:
在我的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);
?>
请注意,您正在使用不推荐的MySQL命令 - 使用mysqli_ *而不是mysql_ *。你的PHP脚本也暴露给SQL注入(不要像查询那样传递$ name!请确保先用mysqli_real_escape_string过滤它)。 – uri2x