pdo limit查询不起作用

uyhoqukh  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(313)

我正试图让一个极限查询工作。到目前为止,我已经证实了以下几点:
所有输入有效且正确。当手动运行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){
               }

如有任何建议,我们将不胜感激

bq3bfh9z

bq3bfh9z1#

我找到的唯一解决方案是手动绑定参数,而不是将它们放在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){
               }

如果有人知道如何让它在执行方法工作,请让我知道,我会更新答案。

相关问题