Я думаю, что PDO fetch () и fetchColumn () блокируют друг друга - PullRequest
0 голосов
/ 19 марта 2019

Итак, я экспериментировал с запросами PDO.Взгляните на этот фрагмент:

1. $rows = $stmt->fetchColumn();
2. echo $rows;
3. $row = $stmt->fetch();
4. print_r($row);

Это всего лишь наблюдение ... не уверен, насколько верно!Строка 2 выполняется и возвращает количество строк (в моем случае 1, потому что я просто аутентифицировал пользователя).Строка 4 ничего не возвращает.

Если вы перевернули порядок:

1. $row = $stmt->fetch();
2. print_r($row);
3. $rows = $stmt->fetchColumn();
4. echo $rows;

Массив из строки 2 печатается, но строка 4 ничего не возвращает!Это правильное поведение?

В любом случае, как мне добиться следующего результата?

if ($stmt->fetchColumn() == 1) {
    $row = $stmt->fetch();
    print_r($row);
} else {
    echo '<div class="error-message">Verify Your Credentials</div>';
}

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

этот ответ может помочь вам PDO извлечь один столбец из таблицы в одномерный массив

fetchColumn возвращает только один результат, но вы можете сгладить его по-разному, используя методы pdo :: fetch, вы должны найти их, и они быстро и просто отсортируют ваши результаты. Попробуйте это еще для чтения https://phpdelusions.net/pdo/fetch_modes

0 голосов
/ 19 марта 2019

Это правильное поведение, fetchColumn выбирает один столбец. Вы не можете получить его дважды. Вы можете использовать:

/* fetches row from the result, if theres no row in the result, fetch returns false */
$row = $stmt->fetch(); 

/* compare if $row is true (in PHP, "boolean value" of unempty array is true) */
if ( $row ) { 
    print_r($row);
} else {
    echo '<div class="error-message">Verify Your Credentials</div>';
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...