【问题标题】:How can I delete row from sql database where 2 different data equals to something?如何从 sql 数据库中删除两个不同数据相等的行?
【发布时间】:2018-12-29 12:47:21
【问题描述】:

我有一个文本视图,当我点击它时,如果我的用户 id 等于表中的 id,它会从表中删除一行。但是现在我想删除来自用户的两个不同数据等于表中数据的行。 这是我的php代码:

public function deleteUser($email, $name){
            $stmt = $this->con->prepare("DELETE FROM users WHERE email = ? AND name = ?");
            $stmt->bind_param("ss", $email, $name);
            if($stmt->execute())
                return true; 
            return false; 
        }


$app->delete('/deleteuser/{email}{name}', function(Request $request, Response $response, array $args){
    $email = $args['email'];
    $name = $args['name'];
    $db = new DbOperations; 
    $response_data = array();
    if($db->deleteUser($email, $name)){
        $response_data['error'] = false; 
        $response_data['message'] = 'User has been deleted';    
    }else{
        $response_data['error'] = true; 
        $response_data['message'] = 'Plase try again later';
    }
    $response->write(json_encode($response_data));
    return $response
    ->withHeader('Content-type', 'application/json')
    ->withStatus(200);
});

我已经使用 postman 对其进行了测试,它运行良好,但是当我将此代码实现到 android 时它崩溃了。这是我的 API 类:

@DELETE("deleteuser/{email}{name}")
    Call<DefaultResponse> deleteUser(
            @Field("email") String email,
            @Field("name") String name

    );

这是我删除用户的活动:

User user = SharedPrefManager.getInstance(MySettingsActivity.this).getUser();

                        Call<DefaultResponse> call = RetrofitClient.getInstance().getApi().deleteUser(user.getEmail(),user.getName());
                        call.enqueue(new Callback<DefaultResponse>() {
                            @Override
                            public void onResponse(Call<DefaultResponse> call, Response<DefaultResponse> response) {

                                if (!response.body().isErr()){

//                                    SharedPrefManager.getInstance(MySettingsActivity.this).clear();
//                                    Intent deleteIntent = new Intent(MySettingsActivity.this, WelcomeActivity.class);
//                                    deleteIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
//                                    startActivity(deleteIntent);
                                }
                                Toast.makeText(MySettingsActivity.this, response.body().getMsg(), Toast.LENGTH_SHORT).show();
                            }

                            @Override
                            public void onFailure(Call<DefaultResponse> call, Throwable t) {

                            }
                        });

当我仅通过一个数据(例如 id)删除用户时,它可以正常工作,但是当我想通过两个数据删除它时,它会崩溃吗?请帮助我哪里有错误?

【问题讨论】:

    标签: php android database


    【解决方案1】:

    如果您想了解究竟发生了什么,请阅读调试。通过调试,您可以逐行执行您的 php 代码。您将看到每个变量。很容易找出你的逻辑问题在哪里。

    附:不推荐,你也可以写一些var_dump,看看你到底从客户那里收到了什么。

    【讨论】:

    • 知道我的问题在哪里。
    • Call call = RetrofitClient.getInstance().getApi().deleteUser(user.getEmail(),user.getName());
    • 当我想通过两个字符串删除用户时,在此代码中
    • 当我用一个字符串做这个操作时一切正常
    • 感谢推荐调试。我发现了我的问题。在我的 API 中,我使用 FIELD 而不是 PATH。
    猜你喜欢
    • 1970-01-01
    • 2022-01-01
    • 2014-05-09
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多