SQL限制返回'zero'-0-行(在PHP中)

SQL限制返回'zero'-0-行(在PHP中),php,sql,mysql,limit,Php,Sql,Mysql,Limit,我在这个查询中有一个错误,当查询返回零行时。 错误号码:1064 您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第3行中使用的接近'-20,20'的正确语法 选择pl.name,pl.email FROM players pl加入players_bonus pl_b on pl.id=pl_b.id_player,其中pl_b.id_bonus=3 LIMIT-20,20 我的方法是: public function getPViews_num_rows($limi

我在这个查询中有一个错误,当查询返回零行时。 错误号码:1064

您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第3行中使用的接近'-20,20'的正确语法

选择pl.name,pl.email FROM players pl加入players_bonus pl_b on pl.id=pl_b.id_player,其中pl_b.id_bonus=3 LIMIT-20,20 我的方法是:

    public function getPViews_num_rows($limit = array(0,20),$page_num = 1,$id) {
        $limit = "LIMIT {$limit[0]},{$limit[1]}";

    $sql = "SELECT pl.name,pl.email FROM players pl 
            JOIN players_bonus pl_b on pl.id = pl_b.id_player 
                WHERE pl_b.id_bonus = ? {$limit}";

    $where =  array($id);
    $query = $this->db->query ( $sql,$where );
    return $query->num_rows ();
}
在执行此查询之前,我不想再执行另一个查询来计算行数。 谢谢您的回答。

您不能将负值指定为限制条款:


这意味着您要返回从-20开始的20行,这是错误的。

限制不能为负。

限制子句的偏移量值必须为非负整数常量。引述:

LIMIT子句可用于约束SELECT语句返回的行数。LIMIT接受一个或两个数值参数,这两个参数都必须是非负整数常量,除非使用准备好的语句


默认情况下,限制为0,20,但不是负值$极限=阵列0,20@Oyeme:我知道,但您在查询中指定了负-20,20选择玩家的pl.name,pl.email pl加入玩家\u奖金pl\u b on pl.id=pl\u b.id\u玩家,其中pl\u b.id\u奖金=3限制-20,20。您必须修改函数,以使limit子句不允许负值。谢谢。。我发现了我的错误..我使用了codeigniter内核,它的codeigniter bug我用的是$this->db->limit0,30;而且很有效。。
LIMIT -20,20