繁体   English   中英

使用android从MySql数据库中删除用户

[英]Delete a user from MySql database using android

我正在尝试根据 id 从 mysql 表中删除一行。 应该相当直接,而且我做错了可能很简单。 服务器使用 xampp 在本地托管。

这是java异步任务代码:

private class DeleteUserTask extends AsyncTask<ApiConnector,Long,Boolean> {

    @Override
    protected Boolean doInBackground(ApiConnector... params) {

        // it is executed on Background thread

        return params[0].DeleteUser(userId);
    }

    @Override
    protected void onPostExecute(Boolean deleted) {
        if (deleted){
            AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(ViewUsers.this);
            dlgAlert.setMessage("User Deleted");
            dlgAlert.setTitle("Success");
            dlgAlert.setPositiveButton("OK", null);
            dlgAlert.setCancelable(true);
            dlgAlert.create().show();
        }else{
            AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(ViewUsers.this);
            dlgAlert.setMessage("User Not Deleted");
            dlgAlert.setTitle("Failed");
            dlgAlert.setPositiveButton("OK", null);
            dlgAlert.setCancelable(true);
            dlgAlert.create().show();
        }
    }

}

创建和执行 asyncTask:

final DeleteUserTask asyncDeleteUser = new DeleteUserTask();
asyncDeleteUser.execute(new ApiConnector());

ApiConnector 方法:

public Boolean DeleteUser(int userId){
    // URL for getting all customers

    String url = "http://192.168.20.107/webservice/deleteUser.php?userId="+userId;

    // Get HttpResponse Object from url.
    // Get HttpEntity from Http Response Object

    HttpEntity httpEntity = null;

    try
    {
        DefaultHttpClient httpClient = new DefaultHttpClient();  // Default HttpClient
        HttpGet httpGet = new HttpGet(url);

        HttpResponse httpResponse = httpClient.execute(httpGet);

        httpEntity = httpResponse.getEntity();

        return true;
    } catch (ClientProtocolException e) {
        // Signals error in http protocol
        e.printStackTrace();
        //Log Errors Here
    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;
}

以及托管在服务器上的 deleteUser.php 文件:

<?php

$connection = mysqli_connect("localhost","root","","webservice") or die("Error " . mysqli_error($connection));

$userId =$_REQUEST['userId'];

$sql = "DELETE FROM users WHERE id = '$userId'";
mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));


mysqli_close($connection);
?>

我可以确认 java 代码中的 userId 变量确实保存了正确的 int 值。

运行应用程序并尝试删除用户时,它会进入“成功,用户已删除”警报对话框,但该用户仍在数据库中。

请尝试更改 $userId =$_REQUEST['userId'];

到 $userId =$_GET['userId'];

如果您在 userId 变量中获得正确的值,请检查 php。

只要其中的JAVA代码运行(连接到 url),您的 try 块将始终返回 true。 php 和 mysqli代码中的错误不会以任何方式影响它,因为 java 和 android 无法区分具有工作 php 和成功查询的站点与存在错误的站点之间的区别。 (多几行代码看看网站是否返回错误可以解决这个问题)

将您的 url(带有 userId)复制并粘贴到您计算机的 Web 浏览器 ( http://192.168.20.107/webservice/deleteUser.php?userId=1 ) 中并阅读它显示的错误消息(如果有)。

也用

$userId = $_GET['userId'];

代替

$userId = $_REQUEST['userId'];

更改这行代码:

$sql = "DELETE FROM users WHERE id = '$userId'";

到:

$sql = "DELETE FROM users WHERE id = $userId";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM