Выборка PDO и fetchAll с условным оператором не работают

он не работает, кто-нибудь может помочь, пожалуйста?

(count($stmt->fetchAll()) > 1) ? $result = $stmt->fetchAll() : $result = $stmt->fetch();

print_r($result);

person Abdul Moiz    schedule 20.06.2015    source источник
comment
это более правильный путь. $result = (count($stmt->fetchAll()) > 1) ? ($stmt->fetchAll()) : ($stmt->fetch());   -  person jagad89    schedule 20.06.2015
comment
Спасибо за предложение, но это не решает мою проблему.   -  person Abdul Moiz    schedule 20.06.2015
comment
Смотрите ответ Мурейника ниже. у него есть причина, по которой он не работает.   -  person jagad89    schedule 20.06.2015


Ответы (1)


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

Вы можете повторить свое условие в памяти после вызова fetchAll() только один раз:

$result = $statement->fetchAll();
if (count($result) == 1) {
    $result = $result[0];
}
person Mureinik    schedule 20.06.2015
comment
Спасибо миллион Мурейник. - person Abdul Moiz; 20.06.2015