带有开始和限制的PHP mssql查询-附加到查询问题

带有开始和限制的PHP mssql查询-附加到查询问题,php,sql-server,Php,Sql Server,我通常使用PHP/MySQL编写代码,但是对于这个项目,我必须使用MSSQL 下面的逻辑在MySQL中可以工作,但因为在MSSQL中设置限制是一个更复杂的查询,所以当我想要附加到查询时,它会导致问题。我对查询进行了处理,试图弄清楚它应该是怎样的,但无法让它工作。请帮忙 //get all products for shopkeeper if($limit == 0) { $prod_qry = "SELECT id, productName FROM produc

我通常使用PHP/MySQL编写代码,但是对于这个项目,我必须使用MSSQL

下面的逻辑在MySQL中可以工作,但因为在MSSQL中设置限制是一个更复杂的查询,所以当我想要附加到查询时,它会导致问题。我对查询进行了处理,试图弄清楚它应该是怎样的,但无法让它工作。请帮忙

    //get all products for shopkeeper
    if($limit == 0) {
        $prod_qry = "SELECT id, productName FROM products WITH(NOLOCK) WHERE shopkeeper = '$this->shopkeeper'";
    }
    if($limit > 0) {
        $prod_qry = "SELECT * FROM ( SELECT id, productName, ROW_NUMBER() OVER (ORDER BY id) as row  FROM products WITH(NOLOCK)  WHERE shopkeeper='$this->shopkeeper'  ) a WHERE row > $start and row <= $limit";
    }
    if($hidden == 1) {
        $prod_qry .= " AND Hidden !='1'";
    }

    if($rating != 0) {
        $prod_qry .= " AND rating > '$rating'";
    }
*编辑* 我想出来了,修改了下面的代码:

    $prod_qry = "SELECT * FROM ( SELECT id, productName, ROW_NUMBER() OVER (ORDER BY id) as row  FROM products WITH(NOLOCK)  WHERE shopkeeper='$this->shopkeeper'" ;

    if($hidden == 1) {
        $prod_qry .= " AND Hidden !='1'";
    }

    if($rating != 0) {
        $prod_qry .= " AND rating > '$rating'";
    }       

    $prod_qry .= ") a ";    

    if($limit > 0) {
        $prod_qry .= " WHERE row > $start and row <= $limit";
    }   

我已经用答案编辑了上面的问题。

但无法使其正常工作。你能说得更具体些吗?错误消息是什么?如果在运行查询之前输出查询,它是什么样子的?它的格式正确吗?这就是问题所在,我不知道如何正确地形成它,我不熟悉MSSQL。