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

谁能帮我找出为什么这不起作用?

4

2 回答 2

2

您需要将这些参数绑定为整数,而不是字符串(默认)。将参数绑定为字符串会自动在它们周围添加引号。

$statement->bindParam(":current", $current, PDO::PARAM_INT)

此示例使用命名占位符。我建议您无论如何都使用它。

于 2012-06-02T15:08:15.553 回答
1

让您看到一个字符串,其中的占位符被提供的值替换,这不是 pdo 提供的功能。但是,它将使用您的值正确执行准备好的语句。

对于 pdos mysql 驱动程序,如果在值数组上使用 execute(),则在为部分限制子句绑定值时有一个特殊性。请参阅如何传递一组 PDO 参数但仍指定它们的类型?

于 2012-06-02T15:08:54.590 回答