Вручную создайте пустой набор записей PDO - PullRequest
0 голосов
/ 23 октября 2019

У меня есть страницы, где я вывожу кучу записей в таблице. Иногда у меня возникает ситуация, когда я хочу вести себя так, как будто нет записей. Есть ли способ вручную создать пустой набор записей PDO? Создать тот же результат, что и запрос, который не дал никаких записей?

Полагаю, альтернативой этому будет то, какой самый минимально возможный (пустой результат) запрос, который я могу выполнить, - это наименьшая нагрузка на базу данных.

Использование PHP 7 и MySQL 5.6

(Что касается предположений, что я структурирую страницу по-разному, альтернативы должны использовать goto для перехода через цикл вывода или обернуть весь цикл вгигантское выражение if(). Мне известны эти альтернативные маршруты. Мне просто интересно, есть ли готовый способ просто передать пустой набор записей в мой цикл while( $r = $rs->fetch() ) ....)

Ответы [ 2 ]

2 голосов
/ 23 октября 2019

Вы должны понимать, что любое прямое решение - это костыль , поддерживающий изначально неверную архитектуру.

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

Тем не менее, то, что вы хотите, напрямую достигается $rs = new PDOStatement();

1 голос
/ 23 октября 2019

Я не знаю, что и почему вы пытаетесь сделать. Похоже, вы ищете «грязный хак» для обхода некоторого кода вместо его модификации. Однако - в PHP 7 вы можете просто определить анонимный класс с помощью метода fetch(), который всегда будет возвращать false:

$rs = new class() {
    public function fetch() {
        return false;
    }
};

while( $r = $rs->fetch() ) {
    echo "This shouldn't be printed.";
}
...