当前位置: 首页 > 面试题库 >

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

郑伟彦
2023-03-14
问题内容

这是我的代码的快照:

$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

那是我在看的吗?自2008年4月以来,此错误已被打开!同时,我们应该做什么?

我需要建立一些分页,并在发送sql语句之前确保数据干净,sql注入安全


问题答案:

我记得以前有这个问题。将值转换为整数,然后再将其传递给bind函数。我认为这解决了。

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


 类似资料:
  • 问题内容: 是的,当我尝试在看起来像这样的变量上使用bindvalues时,我遇到了一个问题: 现在看起来像这样: 但这不起作用,还尝试了以下方法: 并得到了一些语法错误.. 正确的解决方案是什么?我还以为在bindValue(:firstname,$ firstname%)中添加%,但是我也需要在其他地方使用:firstname,也不应使用%。 帮忙谢谢 问题答案: 好的,添加到绑定值: 接着

  • 主要内容:语法,实例SQLite 的 LIMIT 子句用于限制由 SELECT 语句返回的数据数量。 语法 带有 LIMIT 子句的 SELECT 语句的基本语法如下: 下面是 LIMIT 子句与 OFFSET 子句一起使用时的语法: SQLite 引擎将返回从下一行开始直到给定的 OFFSET 为止的所有行,如下面的最后一个实例所示。 实例 假设 COMPANY 表有以下记录: 下面是一个实例,它限制了您想要从表中

  • 问题内容: 我正在写一个存储过程,其中有一个名为 my_size 的输入参数,它是一个 INTEGER 。我希望能够在语句的子句中使用它。显然,这不受支持,是否有解决方法? 问题答案: 通过搜索找到了这篇文章。我在下面粘贴了相关文本。 这是一个论坛帖子,显示了准备好的语句的示例,可让您将变量值分配给limit子句: http://forums.mysql.com/read.php?98,12637

  • 本文向大家介绍我们如何将MySQL DISTINCT子句与WHERE和LIMIT子句一起使用?,包括了我们如何将MySQL DISTINCT子句与WHERE和LIMIT子句一起使用?的使用技巧和注意事项,需要的朋友参考一下 通过在MySQL查询中将WHERE子句与DISTINCT子句一起使用,我们将基于一个条件,即MySQL返回结果集的唯一行。通过在MySQL查询中使用LIMIT子句和DISTIN

  • 问题内容: 是否可以在WHERE子句中使用LIMIT x? 如果是这样,怎么办? 我正在尝试这样做: 但我收到以下错误: 问题答案: 应该在之后。 句法 :

  • 问题内容: 使用大偏移量的mysql 时出现性能问题: 如果偏移量大于1,000,000,则操作非常缓慢。 我必须使用; 我不能使用类似的东西。 如何优化此语句以获得更好的性能? 问题答案: 也许您可以创建一个索引表,该表提供与目标表中的键相关的顺序键。然后,您可以将此索引表连接到目标表,并使用where子句更有效地获取所需的行。