Запрос ограничения PDO не работает с использованием привязки в Execute - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь заставить работать лимитный запрос.До сих пор я проверял следующее:

Все введенные данные верны и верныЗапрос работает при ручном запуске с MySQL. Значения приводятся к типу INT.Я даже перенес переменные со значением int.

       try {
             $sql = "SELECT * FROM sensor_data WHERE sid=:sid ORDER BY id DESC LIMIT :starting_limit, :recordlimit";
             $core = CoreDB::getInstance();
             $sth = $core->dbh->prepare($sql);
             $sth->execute(array(':sid' => $sensor->getID(),  ':starting_limit' => (int)0, ':recordlimit' => (int)10));
            // $sth->execute(array(':sid' => $sensor->getID()));
             $results = $sth->fetchAll();
             var_dump($sth->rowCount());
             if ($sth->rowCount() > 0) {
                 foreach($results as $row){
                   $id = $row['id'];
                   var_dump($id);
                   }
                 }
               }
               catch(Exception $e){
               }

Любой совет приветствуется

1 Ответ

0 голосов
/ 05 июня 2018

Единственное решение, которое я нашел, - это связывать параметры вручную, а не помещать их в массив в методе execute.

         try {
             $sql = "SELECT * FROM sensor_data WHERE sid=:sid ORDER BY id DESC LIMIT :starting_limit, :recordlimit";
             $core = CoreDB::getInstance();
             $sth = $core->dbh->prepare($sql);
             $sth->bindValue(':sid', $sensor->getID(), PDO::PARAM_INT);
             $sth->bindValue(':starting_limit', 0, PDO::PARAM_INT);
             $sth->bindValue(':recordlimit', 10, PDO::PARAM_INT);
             $sth->execute();
             $results = $sth->fetchAll();
             var_dump($sth->rowCount());
             if ($sth->rowCount() > 0) {
                 foreach($results as $row){
                   $id = $row['id'];
                   var_dump($id);
                   }
                 }
               }
               catch(Exception $e){
               }

Если кто-нибудь знает, как заставить его работать в методе execute, пожалуйста, дайте мне знать, и я обновлю ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...