MVC Запрос не получает все записи из базы данных - PullRequest
0 голосов
/ 05 февраля 2020

БД хранит несколько учетных записей: [winn ie, winnie9, winnie10], однако запрос возвращает только одну запись, когда я получаю данные. Каким было бы решение?

Метод модели:

protected function getApprovedUsers($login) {
        $sql = "SELECT `email`, `login`, `name`, `reg_date`, `pass`, `role` FROM `approved` WHERE `login` LIKE ?";
        $stmt = $this->connect()->prepare($sql);

        $stmt->execute([$login]);

        if($users = $stmt->fetchAll())
            return $users;

        return null;
    }

Вызов контроллера для модели:

    public function getCertainApprovedUser($login) {
        $users = $this->getApprovedUsers($login);

        if(is_array($users) || is_object($users)) {
            foreach ($users as $user) {
                return array("email"=>$user["email"], "login"=>$user["login"], "pass"=> $user["pass"],
                    "name"=> $user["name"], "reg_date"=> $user["reg_date"], "role"=> $user["role"]);
            }
        }
        else {
            throw new Exception("Nothing to fetch");
        }
    }
}

Обработка данных, чтобы оператор LIKE работал правильно ( %%):

$record = $userContr->getCertainApprovedUser("%$login%");

$someJSON = array(
    [
        "login"=>"{$record['login']}",
        "email"=>"{$record['email']}",
        "name"=>"{$record['name']}",
        "reg_date"=>"{$record['reg_date']}"
    ]
);

$newJSON = json_encode($someJSON);
echo $newJSON;

1 Ответ

0 голосов
/ 05 февраля 2020

в методе getCertainApprovedUser(), вы возвращаете значение в foreach. Это немедленно ломает l oop на первой итерации.

Изменяет ваш l oop на что-то вроде:

$result = []; // initialize an empty array
foreach ($users as $user) {
    // add a user to that array
    $result[] = array("email"=>$user["email"], "login"=>$user["login"], "pass"=> $user["pass"], "name"=> $user["name"], "reg_date"=> $user["reg_date"], "role"=> $user["role"]);
}
// return the array containing the users
return $result;

А затем, чтобы построить json, примените та же логика c:

$someJSON = [];

foreach ($record as $user)
{
    $someJSON[] = [
        "login"=>$user['login'],
        "email"=>$user['email'],
        "name"=>$user['name'],
        "reg_date"=>$user['reg_date']
    ];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...