PHP分页查询失败

PHP分页查询失败,php,mysql,Php,Mysql,我在php脚本中收到分页错误。当直接在mysql workbench中运行查询时,查询工作正常,并返回正确的结果 返回错误:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第2行“LIMIT 0,20”附近要使用的正确语法 $getpositive = "select case_number, c.name as subject, a.name, u.first_name, u.last_name from cases as c join cases_cstm as c

我在php脚本中收到分页错误。当直接在mysql workbench中运行查询时,查询工作正常,并返回正确的结果

返回错误:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第2行“LIMIT 0,20”附近要使用的正确语法

    $getpositive = "select case_number, c.name as subject, a.name, u.first_name, u.last_name from cases as c join cases_cstm as cc on c.id = cc.id_c
                left join accounts as a on a.id = c.account_id left join users as u on u.id = c.assigned_user_id where rating_c ='1';";
$db -> PS_Pagination($getpositive, 20, 5, "");
$db -> setDebug(true);
$rs = $db->paginate();
$positive_rating_rows = mysql_num_rows($rs);
然后,我将这些结果显示在表格中:

while($val = mysql_fetch_assoc($rs)) 
        {          

        ?>
                </tr>
                <tr>
                    <td width="7%"><?=$val['case_number']?></td>
                    <td width="40%"><?=$val['subject']?></td>
                    <td width="40%"><?=$val['name']?></td>
                </tr>
while($val=mysql\u fetch\u assoc($rs))
{          
?>
以下是我的分页功能:

public function PS_Pagination($sql, $rows_per_page = 10, $links_per_page = 5, $append = "") {
    //$this->conn = $connection;
    $this->sql = $sql;
    $this->rows_per_page = (int)$rows_per_page;
    if (intval($links_per_page ) > 0) {
        $this->links_per_page = (int)$links_per_page;
    } else {
        $this->links_per_page = 5;
    }
    $this->append = $append;
    $this->php_self = htmlspecialchars($_SERVER['PHP_SELF'] );
    if (isset($_GET['page'] )) {
        $this->page = intval($_GET['page'] );
    }
}

public function paginate() {
    //Check for valid mysql connection
    if (! $this->IsConnected()) {
        $this->SetError("No connection");
        return false;
    }

    //Find total number of rows
    $all_rs = @mysql_query($this->sql );
    if (! $all_rs) {
        if ($this->debug)
            echo "SQL query failed. Check your query.<br /><br />Error Returned: " . mysql_error();
        return false;
    }
    $this->total_rows = mysql_num_rows($all_rs );
    @mysql_close($all_rs );

    //Return FALSE if no rows found
    if ($this->total_rows == 0) {
        if ($this->debug)
            //echo "Query returned zero rows.";
        return FALSE;
    }

    //Max number of pages
    $this->max_pages = ceil($this->total_rows / $this->rows_per_page );
    if ($this->links_per_page > $this->max_pages) {
        $this->links_per_page = $this->max_pages;
    }

    //Check the page value just in case someone is trying to input an aribitrary value
    if ($this->page > $this->max_pages || $this->page <= 0) {
        $this->page = 1;
    }

    //Calculate Offset
    $this->offset = $this->rows_per_page * ($this->page - 1);

    //Fetch the required result set
    //echo $this->sql . " LIMIT {$this->offset}, {$this->rows_per_page}";
    $rs = @mysql_query($this->sql . " LIMIT {$this->offset}, {$this->rows_per_page}" );
    if (! $rs) {
        if ($this->debug)
            echo "Pagination query failed. Check your query.<br /><br />Error Returned: " . mysql_error();
        return false;
    }
    return $rs;
}
公共函数PS_分页($sql,$rows_per_page=10,$links_per_page=5,$append=”“){
//$this->conn=$connection;
$this->sql=$sql;
$this->rows\u per\u page=(int)$rows\u per\u page;
如果(intval($links\u/页)>0){
$this->links\u per\u page=(int)$links\u per\u page;
}否则{
$this->links\u per\u page=5;
}
$this->append=$append;
$this->php_self=htmlspecialchars($_SERVER['php_self']);
如果(isset($_GET['page'])){
$this->page=intval($_GET['page']);
}
}
公共功能分页(){
//检查有效的mysql连接
如果(!$this->IsConnected()){
$this->SetError(“无连接”);
返回false;
}
//查找总行数
$all\u rs=@mysql\u查询($this->sql);
如果(!$all_rs){
如果($this->debug)
echo“SQL查询失败。请检查您的查询。

返回的错误:“.mysql_Error(); 返回false; } $this->total_rows=mysql_num_rows($all_r); @mysql_close($all_r); //如果未找到行,则返回FALSE 如果($this->total_rows==0){ 如果($this->debug) //echo“查询返回零行。”; 返回FALSE; } //最大页数 $this->max\u pages=ceil($this->total\u rows/$this->rows\u per\u page); 如果($this->links\u per\u page>$this->max\u page){ $this->links\u per\u page=$this->max\u page; } //检查页面值,以防有人试图输入aribitrary值 如果($this->page>$this->max|u pages |$this->page=1; } //计算偏移量 $this->offset=$this->每页行数*($this->page-1); //获取所需的结果集 //echo$this->sql.“限制{$this->offset},{$this->rows\u per\u page}”; $rs=@mysql\u query($this->sql。“限制{$this->offset},{$this->rows\u per\u page}”); 如果(!$rs){ 如果($this->debug) echo“分页查询失败。请检查您的查询。

返回错误:“.mysql_Error(); 返回false; } 返回$rs; }
您在查询的末尾有一个
,然后您试图在末尾添加
限制0,20
。因此它看起来是这样的:
废话废话废话,其中某物=值;限制0,20
。这不起作用。请删除
以进行修复


旁注,您可能对语法感兴趣,因为这将极大地优化您的分页方法。

您的SQL语句末尾有一个分号。我猜
PS_pagination
方法只是将
LIMIT 0,20
附加到您的查询中,所以它的结果就像
SELECT blah;LIMIT 0,20
,这不是valid SQL。

发布实际的错误消息可能会有所帮助…另外,摘录$db类(特别是PS_分页和分页函数)也会有所帮助。我添加了错误。我不确定分页函数的位置。显然其中一个函数正在修改查询(至少添加
限制0,20
位),因此,查看负责此操作的函数是至关重要的。否则,我们可能无法找到解决方案。@I工程师如果您不知道分页函数的位置,您希望如何修复它们?您在寻找哪种不涉及更改代码的答案?@Mike B我能够找到分页代码。I我想我的查询不是我的分页功能有问题。我已经编辑了我的原始帖子。-谢谢