PDO 准备语句限制不起作用 [重复]

Posted

技术标签:

【中文标题】PDO 准备语句限制不起作用 [重复]【英文标题】:PDO Prepare Statement Limit Not Working [duplicate] 【发布时间】:2013-06-25 17:37:34 【问题描述】:

我试图限制从 SQL 查询返回的结果数量,但由于某种原因它返回 NULL。如果我删除 LIMIT,一切正常。我已经在 Sequel Pro 中测试了该查询,它也适用于 LIMIT。我在这里做错了吗?

 public static function getMostViewedPictures($limit = 5) 
    $dbh = self::connectToDatabase();

    $sql = "SELECT 
                picture.`title`, 
                picture.`description`,
                picture.`slug`,
                picture.`image`,
                picture.`timestamp`,
                picture.`views`,
                category.category as category
            FROM picture 
            LEFT JOIN category 
                ON picture.category_id = category.id
            ORDER BY picture.views ASC
            LIMIT 0, :limit";

    $sth = $dbh->prepare($sql);
    $sth->execute(array(':limit' => $limit));

    if($results = $sth->fetchAll(PDO::FETCH_OBJ)) 
        $pictures = array();

        foreach($results as $result) 
            $pictures[] = new Picture(
                $result->title,
                $result->description,
                $result->slug,
                $result->timestamp,
                $result->category,
                $result->views,
                $result->image
            );
        

        return $pictures;
     else 
        return null;
    

【问题讨论】:

另见PDO prepared statement causes an error in LIMIT statement 也可以查看***.com/questions/2269840/php-pdo-bindvalue-in-limit 【参考方案1】:

解决了。

$sth->bindParam(':limit', $limit, PDO::PARAM_INT);

【讨论】:

以上是关于PDO 准备语句限制不起作用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

参数化 PDO 查询和“LIMIT”子句 - 不起作用 [重复]

使用php pdo选择原始计数不起作用[重复]

MySQL PDO INSERT ... SELECT IF 语句不起作用

我的 PDO 声明不起作用

我的 PDO 声明不起作用

我的 PDO 声明不起作用