PHP编写的声明不起作用

时间:2012-06-02 15:01:33

标签: php mysql pdo

<?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)

任何人都可以帮我找到为什么这不起作用吗?

2 个答案:

答案 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?