将Zebra分页PHP脚本转换为准备好的语句

将Zebra分页PHP脚本转换为准备好的语句,php,mysql,pagination,Php,Mysql,Pagination,我正在使用MySQL对数据进行分页。示例脚本已经足够好,可以对它们进行分页,但现在我想使用prepared语句 斑马分页脚本通常是这样的 $records_per_page = 10; require 'Zebra_Pagination.php'; $pagination = new Zebra_Pagination(); $limit1 = ($pagination->get_page() - 1) * $records_per_page; $limit2 = $records_pe

我正在使用MySQL对数据进行分页。示例脚本已经足够好,可以对它们进行分页,但现在我想使用prepared语句

斑马分页脚本通常是这样的

$records_per_page = 10; 
require 'Zebra_Pagination.php'; 
$pagination = new Zebra_Pagination();
$limit1 = ($pagination->get_page() - 1) * $records_per_page;
$limit2 = $records_per_page;

$MySQL = '
    SELECT
        SQL_CALC_FOUND_ROWS
        *
    FROM
        `magz`.`magazine`
    ORDER BY `magz_release` DESC
    LIMIT $limit1, $limit2';    

if (!($result = @mysqli_query($link, $MySQL))) {
    die(mysqli_error($link));       
}   

$rows = mysqli_fetch_assoc(mysqli_query($link, 'SELECT FOUND_ROWS() AS rows')); 
$pagination->records($rows['rows']);
$pagination->records_per_page($records_per_page);

while ($row = mysqli_fetch_array($result)){
    //render queries here
}

$pagination->render();
这是我第一次使用事先准备好的声明,我做了一些修改。但有点不对劲。要么:

  • 当我对行执行了
    fetch\u assoc
    操作时,它将在布尔值上弹出
    对成员函数fetch\u assoc()的调用
    
  • 或者显示正确的查询,但在为行输入数字时,分页链接未呈现
  • 这是我的密码。如果有人能指出我哪里做错了,我将不胜感激

    $records_per_page = 2;  
    require "js/Zebra_Pagination.php";
    $pagination = new Zebra_Pagination();
    $limit1 = ($pagination->get_page() - 1) * $records_per_page;
    $limit2 = $records_per_page;
    
    $stmt = $link->prepare("
        select SQL_CALC_FOUND_ROWS 
            c.comic_name, CONCAT(pa.people_name, '/',pb.people_name) as 'author', ct.city_name, p.publisher_name, c.comic_id 
        from ref_author ra 
        natural join ref_publisher rp 
        natural join ref_setting rs
        inner join comic c on c.comic_id = ra.comic_id 
        inner join people pa on pa.people_id = ra.people_writer_id 
        inner join people pb on pb.people_id = ra.people_illust_id 
        inner join publisher p on p.publisher_id = rp.publisher_id
        inner join city ct on ct.city_id = rs.city_id
        where rs.province_id = ?
        LIMIT $limit1, $limit2
    ");
    
    $stmt->bind_param("s", $_GET["prov"]);
    $stmt->execute();
    $result = $stmt->bind_result($comic_name, $comic_author, $comic_city, $comic_publish, $comic_id);
    
    //This is where the problem starts
    $rows = $result->fetch_assoc($link->execute("SELECT FOUND_ROWS() AS rows")); 
    $pagination->records($rows["rows"]);
    $pagination->records_per_page($records_per_page);
    
    while($stmt->fetch()){
        echo 
            "<tr>
                <td><a href='comic.php?comic=".$comic_id."'>".$comic_name."</a></td>
                <td>".$comic_author."</td>
                <td>".$comic_city."</td>
                <td>".$comic_publish."</td>
            </tr>";
    }
    
    $pagination->render();
    $stmt->close();
    
    $records\u per\u page=2;
    需要“js/Zebra_Pagination.php”;
    $pagination=新Zebra_分页();
    $limit1=($pagination->get_page()-1)*$records_per_page;
    $limit2=每页$records\u;
    $stmt=$link->prepare(“
    选择SQL\u CALC\u FOUND\u ROWS
    c、 漫画名称,CONCAT(pa.people\u name,“/”,pb.people\u name)作为“作者”,ct.city\u name,p.publisher\u name,c.comic\u id
    来自ref_作者ra
    自然连接参考
    自然连接参考设置
    c.comic_id=ra.comic_id上的内部连接comic c
    内部连接人员pa on pa.people\u id=ra.people\u writer\u id
    在pb.people\u id=ra.people\u illust\u id上加入内部人员pb
    p.publisher\u id=rp.publisher\u id上的内部联接发布服务器p
    在ct.city\u id=rs.city\u id上内部连接城市ct
    其中rs.province_id=?
    限额$limit1,$limit2
    ");
    $stmt->bind_param(“s”,$\u GET[“prov”]);
    $stmt->execute();
    $result=$stmt->bind_result($comic_name、$comic_author、$comic_city、$comic_publish、$comic_id);
    //问题就从这里开始
    $rows=$result->fetch_assoc($link->execute(“选择找到的行()作为行”);
    $pagination->records($rows[“rows”]);
    $pagination->records_per_page($records_per_page);
    而($stmt->fetch()){
    回音
    "
    “$comic_作者。”
    “$comic_city”
    “$comic_publish。”
    ";
    }
    $pagination->render();
    $stmt->close();
    
    您是否确认或调试分页查询是正确的?@f_anto我已经运行了SQL查询,没有问题。运行股票Zebra分页代码也没有问题。正如我所说的,问题可能来自预先准备好的语句中的
    fetch\u assoc
    部分代码。@MekaMedina您找到这个解决方案的asnwer了吗?因为我现在被困在里面了?thanks@PascaleAbouAbdo事实上,我自己解决了这个问题,这更像是一个扭转局面的解决方案,所以它看起来可能很脏。我无法回答自己的问题,所以我将代码粘贴在这里:@MekaMedina非常感谢