Retrofit, PHP. Получить данные юзера с бд

133
01 августа 2019, 22:10

Имеется две таблицы, одна с пользователями и другая с их данными (заметками). Использую retrofit, но не могу получить данные со второй таблицы (заметки). Как мне необходимо сформировать запрос. Вот, что есть сейчас.

@GET("folder/note.php")
Call<List<Note>> getNotes(
        @Path("email") String email
);
void getDate(String email){
    view.showLoading();
    ApiInterface apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
    Call<List<Note>> call = apiInterface.getNotes(email);
    call.enqueue(new Callback<List<Note>>() {
        @Override
        public void onResponse(@NonNull Call<List<Note>> call,@NonNull Response<List<Note>> response) {
            view.hideLoading();
            if (response.isSuccessful() && response.body() != null){
                view.onGetResult(response.body());
            }
        }
        @Override
        public void onFailure(@NonNull Call<List<Note>> call,@NonNull Throwable t) {
            view.hideLoading();
            view.onErrorLoading(t.getLocalizedMessage());
        }
    });
}

И PHP скрипты getEmail.php

<?php
require_once ('connect.php');
$email = $_POST['email'];
$getId = mysqli_query($conn, "SELECT id FROM `users` WHERE email='$email'");
?>

note.php

header("Content-type:application/json");
require_once ('connect.php');
require_once ("crypt.php");
require_once ("getEmail.php")
//$sql = "SELECT * FROM `users` WHERE id='$id' ";
$result = mysqli_query($conn, "SELECT * FROM `passwords` WHERE id='$getId'");
$response = array();
while ( $row =mysqli_fetch_assoc($result) ){
    $pass = mc_decrypt($row['pass'], ENCRYPTION_KEY);
    array_push($response,
    array(
        'id_pswd'    =>$row['id_pswd'],
        'title' =>$row['title'],
        'email' =>$row['email'],
        'pass'  =>$pass,
        'info'  =>$row['info'],
        'color' =>$row['color'],
        'date'  =>$row['date'])
    );
}
echo json_encode($response);
?>
Answer 1

Во-первых, ваш метод использует GET-запрос, а в коде PHP вы пытаетесь получить переменную из POST-запроса, то есть вам скорее всего нужно использовать $_GET или же $_REQUEST.

Во-вторых, значение @Path-переменной используется для форматирования строки запроса (пути) "folder/note.php", если в нем есть метка с соответствующем именем, то есть, например "folder/note.php/{email}". Тут нужно использовать либо @Field, либо @Query.

Answer 2

Для начала нужно проверить что в переменной $email находится. Для этого просто выведите ее после определения. Например вот так:

$email = $_POST['email'];
echo $email;

Дальше по простому если. Вы делаете запрос но не помещаете результат в переменную. Например вот так:

$getId = mysqli_query($conn, "SELECT id FROM `users` WHERE email='$email'");
$myrow = mysql_fetch_assoc($getId);
// $myrow['id'] будет хранить ваш ID пользователя

Ну а потом уже делаете все остальное подставляя в запрос ID пользователя вот так:

$result = mysqli_query($conn, "SELECT * FROM `passwords` WHERE id='".$myrow['id']."'");
$response = array();
while ( $row =mysqli_fetch_assoc($result) ){
    $pass = mc_decrypt($row['pass'], ENCRYPTION_KEY);
    array_push($response,
    array(
        'id_pswd'    =>$row['id_pswd'],
        'title' =>$row['title'],
        'email' =>$row['email'],
        'pass'  =>$pass,
        'info'  =>$row['info'],
        'color' =>$row['color'],
        'date'  =>$row['date'])
    );
}
READ ALSO
wordpress not able to select the database

wordpress not able to select the database

Мне необходимо собрать Wamp сервер но с БД на PostgreSQLВозникла проблема на моменте установки WordPress, а конкретно "wordpress not able to select the database"

106
PHP Yii2 TabsX::widget превратить в select / или из ul li сделать select на css

PHP Yii2 TabsX::widget превратить в select / или из ul li сделать select на css

Есть кусок кода на PHP Yii2Я делаю адаптив под мобильную версию

148
Отключить оформление ошибок XDebug

Отключить оформление ошибок XDebug

Собственно, как это сделать без отключения самого XDebug?

136
Полнотекстовый поиск sqlite3 PDO не выходит…

Полнотекстовый поиск sqlite3 PDO не выходит…

Я тут наговнокодил, но выдаёт ошибку:

127