PHP - не входит в цикл, если route возвращает строку - PullRequest
0 голосов
/ 26 марта 2019

Я устанавливаю небольшой веб-сервис, который должен возвращать true, если он находит пользователя в БД, и false, если он не находит.Но его всегда возвращают false.На самом деле, если я echo что-то на foreach ничего не возвращает, и если я получаю эхо $data, я получаю Undefined variable: data

Я попытался выполнить поиск по идентификатору, и этокажется нормальным

Если я протестирую, например, с маршрутом /api/users/login/{id}, и изменю foreach на foreach($db->user()->select('username', 'pass')->where('id', $id) as $row), он будет работать правильно.

$app->get('/api/users/login/{username}/{password}', function($request){
    $username = $request -> getAttribute('username');
    $password = $request -> getAttribute('pass');
    $id = $request->getAttribute('id');
    require_once('db/dbconnect.php');

    foreach($db->user()->select('username', 'pass')->where('username', 'pass', $username, $password) as $row){
        $data[] = $row;
    }



    if(isset($data)){
        echo json_encode(true, JSON_UNESCAPED_UNICODE);
    }else{
        echo json_encode(false, JSON_UNESCAPED_UNICODE);
    }


});

Будет ли проблемаМожет быть, я собираюсь получить строки из маршрута?Если так, как я могу это исправить?

1 Ответ

1 голос
/ 26 марта 2019

Вы используете where() неправильно, вы должны использовать его с массивом условий.

Из API :

$table->where(array("field" => "x", "field2" => "y"))

Перевод field = 'x' AND field2 = 'y' (с автоматическим экранированием)

$db->user()->select('username', 'pass')->where([
    'username' => $username,
    'pass' => $password
])
...