Есть обращение к базе через PDO, Php 7.4 Возвращается массив. Логично, что надо проверить пустой ли вернулся ответ, или в нем что то есть. Раньше я делал так: Код (Text): if(count($row)>0){} Все логично, читается понятно. Но в логах заметил ошибку: PHP Warning: count(): Parameter must be an array or an object that implements Countable in Как то не хорошо. gettype($row) говорит object print_r($row) говорит PDORow Object Подскажите, как правильно понятно и красиво сделать проверку на пустоту, без ошибок ?
PHP: public function getTwoParam($query, $ParametrTwo) $this->sQuery = $this->pdo->prepare($query); $this->sQuery->execute($ParametrTwo); return $this->sQuery->fetch(PDO::FETCH_LAZY); $sql = (' SELECT ....) $row = $dbh->getTwoParam($sql, $params); echo $row->rowCount(); Ошибка: PHP Fatal error: Uncaught Error: Call to undefined method PDORow::rowCount() in file.php:8 Stack trace: #0 {main} thrown in file.php on line 8 Или я что то не так делаю ?
Да, не так. PDOStatement::fetch с указанным параметром создаёт новый объект со свойствами соответствующими именам столбцов результирующего набора. Этот объект - не экземпляр класса PDOStatement.
а теперь прочти все остальное, что, где, и для чего целесообразно. --- Добавлено --- смени инструмент для работы с бд. У тебя statement перекрыт под завязку.
хочешь сказать что если в массиве данных не будет то условие на empty не пройдёт ? --- Добавлено --- @MouseZver если ты каунтом проверяешь пустой или не пустой массив то мне жаль твоих клиентов.
@askanim а теперь прочти все остальное, что, где, и для чего целесообразно. empty везде, в любой БД проверке на сущ результата, будет лишним действием, причем двойным действием. Не хочу сказать. Почему без empty не можешь ? нет, я проверяю кол-во твоих символом не актуальных в мой адрес, и то не каунтом. Жало пчелки > 0 == false - я с ними не работаю. А мне стоит писать про - "жаль твоих клиентов, применяя везде и всюду empty конструкцию" ? на 4ый подвиг пойдешь ?