Как я могу удалить строку из базы данных SQL, где 2 разных данных равно чему-то? - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть текстовое представление, когда я щелкаю по нему, оно удаляет одну строку из таблицы, если идентификатор моего пользователя равен идентификатору в таблице.Но теперь я хочу удалить строку, в которой два разных данных пользователя равны данным в таблице.Вот мой 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);
});

Я уже протестировал его с помощью почтальона, и он работает очень хорошо, но когда я внедряю этот код в 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, он работал нормально, нокогда я хочу удалить его по двум данным, он падает?Пожалуйста, помогите мне, где у меня Mistkake?

1 Ответ

0 голосов
/ 29 декабря 2018

Если вы хотите понять, что именно происходит, пожалуйста, прочитайте об отладке.С отладкой вы можете выполнять построчно ваш PHP-код.Вы увидите каждую переменную.Будет так легко выяснить, где ваша логическая проблема.

PS Не рекомендуется, также вы можете написать var_dump и посмотреть, что именно вы получили от клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...