<?php
$current = 0;
$results = 5;
$statement = $db->prepare("SELECT title, id FROM mytable LIMIT ?, ?");
$statement->execute(array($current, $results));
?>
var_dump($statement);
=> public 'queryString' => string 'SELECT title, id FROM mytable LIMIT ?, ?' (length=39)
任何人都可以帮我找到为什么这不起作用吗?
答案 0 :(得分:2)
您需要将这些参数绑定为整数,而不是字符串(默认)。将参数绑定为字符串会自动在它们周围添加引号。
$statement->bindParam(":current", $current, PDO::PARAM_INT)
此示例使用命名占位符。我建议你不管用它。
答案 1 :(得分:1)
让您看到占位符替换为提供的值的字符串不是pdo提供的功能。但是,它会使用您的值正确执行准备好的语句。
对于pdos mysql驱动程序,如果在值数组上使用execute(),则绑定limit子句的一部分的值时会有一个特殊性。见How can I pass an array of PDO parameters yet still specify their types?