相关疑难解决方法(0)

如何在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);
Run Code Online (Sandbox Code Playgroud)

我明白了

您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在第1行的"15",15'附近使用正确的语法

似乎PDO在SQL代码的LIMIT部分中为我的变量添加单引号.我查了一下我发现了这个我认为相关的错误:http: //bugs.php.net/bug.php?id = 44639

这就是我在看的东西吗?这个bug自2008年4月开始!在此期间我们应该做什么?

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

php mysql sql pdo bindvalue

112
推荐指数
5
解决办法
6万
查看次数

MySQL上的LIMIT关键字,带有预处理语句

SELECT id, content, date
FROM comment
WHERE post = ?
ORDER BY date DESC
LIMIT ?, ?
Run Code Online (Sandbox Code Playgroud)

使用PDO(我正在使用具有Apache 2.2.21的MAMP 2.0.5,PHP高达5.3.6和MySQL 5.5.9)准备语句这不起作用,如果我更改查询

LIMIT 0, 10
Run Code Online (Sandbox Code Playgroud)

有用.

我在MySQL的错误中看到这是以前版本中的一个错误,但我无法理解这是否仍有待修复.

如果这仍然是个问题,有办法以另一种方式选择一系列行吗?

码:

$comments = $db->prepare($query); 
/* where $db is the PDO object */ 
$comments->execute(array($post, $min, $max)); 
Run Code Online (Sandbox Code Playgroud)

php mysql prepared-statement limit

21
推荐指数
2
解决办法
2万
查看次数

标签 统计

mysql ×2

php ×2

bindvalue ×1

limit ×1

pdo ×1

prepared-statement ×1

sql ×1