PDO работает не так как я думаю

213
16 апреля 2017, 02:53

Господа не могу понять что не так.

$stmt = $this->db->prepare('
        SELECT
            *
        FROM
            `task`
        ORDER BY
            `id`
        LIMIT
            :limit
        OFFSET
            :offset
        ');
        $limit = Config::TASK_PER_PAGE;
        $pagination = new PaginationService();
        $offset = $pagination->getOfset($total);
        // Bind the query params
        $stmt->bindParam(':limit', $limit, \PDO::PARAM_INT);
        $stmt->bindParam(':offset', $offset, \PDO::PARAM_INT);
        $data = $stmt->fetchAll();
        var_dump($stmt->errorCode());
        var_dump($offset);
        var_dump($limit);
    var_dump($data);

в data пустой массив. Однако если я руками возпроизвожу запрос в базу, то получаю нужный мне ответ. Т.е. не пустой массив. Что я делаю не так?

Answer 1

У меня тоже была такая проблема. Замените bindParam на bindValue и будет работать. Разница такая bindValue - биндим по значению входные параметры, а bindParam - биндим по ссылке входные параметры.

Дело в том, что к моменту выполнения fetchAll, то значение (переменная), что должна передаться по ссылке в bindParam, уже не существует по неизвестной мне причине. Может так интерпретатор php работает или что-то связанное с константой. Этого я не могу объяснить.

READ ALSO
выполнение expect скрипта в php

выполнение expect скрипта в php

Всем приветСитуация такая: я написал exp скрипт который подключается к telnet(OpenBSC) и выводит логи

235
Что за непонятная ошибка curl?

Что за непонятная ошибка curl?

пытаюсь в yii2 спарсить сайты партнеров на тему есть ли товар в наличии организовывал таким методом

210
Получить массив в переменную php

Получить массив в переменную php

ЗдравствуйтеЗадача следующая: В Базе есть ячейка с содержимым

250