为了账号安全,请及时绑定邮箱和手机立即绑定

如何在LIMIT子句中应用bindValue方法?

如何在LIMIT子句中应用bindValue方法?

慕斯709654 2019-05-29 16:51:16
如何在LIMIT子句中应用bindValue方法?这是我的代码的快照:$fetchPictures = $PDO->prepare("SELECT *      FROM pictures      WHERE album = :albumId      ORDER BY id ASC      LIMIT :skip, :max");$fetchPictures->bindValue(':albumId', $_GET['albumid'], PDO::PARAM_INT);if(isset($_GET['skip'])) {     $fetchPictures->bindValue(':skip', trim($_GET['skip']), PDO::PARAM_INT);    } else {     $fetchPictures->bindValue(':skip', 0, PDO::PARAM_INT);  }$fetchPictures->bindValue(':max', $max, PDO::PARAM_INT);     $fetchPictures->execute() or die(print_r($fetchPictures->errorInfo()));$pictures = $fetchPictures->fetchAll(PDO::FETCH_ASSOC);我明白了您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在第1行的“15”,15'附近使用正确的语法似乎PDO在SQL代码的LIMIT部分中为我的变量添加单引号。我查了一下我发现了这个我认为相关的错误:http: //bugs.php.net/bug.php?id = 44639这就是我在看的东西吗?这个bug自2008年4月开始!在此期间我们应该做什么?我需要构建一些分页,并且需要在发送sql语句之前确保数据是干净的,sql注入安全的。
查看完整描述

4 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

我记得之前遇到过这个问题。在将值传递给bind函数之前将值转换为整数。我认为这解决了它。

$fetchPictures->bindValue(':skip', (int) trim($_GET['skip']), PDO::PARAM_INT);


查看完整回答
反对 回复 2019-05-29
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

查看错误报告,以下内容可能有效:

$fetchPictures->bindValue(':albumId', (int)$_GET['albumid'], PDO::PARAM_INT);$fetchPictures->bindValue(':skip',
 (int)trim($_GET['skip']), PDO::PARAM_INT);

但您确定您的传入数据是否正确?因为在错误消息中,数字后面似乎只有一个引号(而不是整数用引号括起来)。这也可能是您输入数据的错误。你print_r($_GET);能找到一个吗?


查看完整回答
反对 回复 2019-05-29
  • 4 回答
  • 0 关注
  • 627 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信