@t3chn0ph0b

SQL запрос возвращает 0 строк. Что не так?

Добрый день.
Есть БД:
CREATE TABLE IF NOT EXISTS `categories`
(
    `id`          int(11)      NOT NULL AUTO_INCREMENT,
    `name`        varchar(256) NOT NULL,
    `description` text         NOT NULL,
    `created`     datetime     NOT NULL,
    `modified`    timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8
  AUTO_INCREMENT = 19;

CREATE TABLE IF NOT EXISTS `products`
(
    `id`          int(11)        NOT NULL AUTO_INCREMENT,
    `name`        varchar(32)    NOT NULL,
    `description` text           NOT NULL,
    `price`       decimal(10, 0) NOT NULL,
    `category_id` int(11)        NOT NULL,
    `created`     datetime       NOT NULL,
    `modified`    timestamp      NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8
  AUTO_INCREMENT = 65;


И есть PHP код:
function read()
    {
        // Выбираем все записи в таблице
        $query = 'SELECT c.name as category_name, p.id, p.name, p.description, p.price, p.category_id, p.created FROM ' . $this->table_name . ' p LEFT JOIN categories c ON p.category_id = c.id ORDER BY p.created DESC';

        // Подготавливаем запрос
        $stmt = $this->connection->prepare($query);

        // Выполняем запрос
        $stmt->execute();

        return $stmt;
    }


При вствке запроса непосредственно в phpMyAdmin всё работает, запрос выводит данные из таблицы.
А при этом же запросе в PHP возвращается 0.

В чем может быть проблема?

З.Ы. Данные в таблицах есть.
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
PDOStatement::rowCount() возвращает количество строк, которые были затронуты в ходе выполнения последнего запроса DELETE, INSERT или UPDATE, запущенного соответствующим объектом PDOStatement.

Если последним запросом, запущенным соответствующим объектом PDOStatement, было SQL-выражение SELECT, некоторые СУБД могут вернуть количество строк в результирующем наборе. Однако, такое поведение метода не гарантируется для всех баз данных, и это нужно учитывать при проектировании приложений.

https://www.php.net/manual/ru/pdostatement.rowcount.php
Ответ написан
@t3chn0ph0b Автор вопроса
Отбой.
Все оказалось проще. Не понимаю почему не выбросило исключение.
Проблема была в этой строке:
$this->connection = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->db_name, $this->username, $this->password);

Отсутствовал символ = после слова host.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы