php - 使用分页时是否需要使用 mysql_free_result 和 mysql_close? PHP

标签 php html mysql database pagination

我只是 PHP 编码的新手。我目前正在开发一个带有分页的简单系统。我想知道使用分页时是否需要释放收集的结果并关闭连接?

提前致谢!

代码如下:

<!DOCTYPE>
<html>
<head>
    <title>View Records</title>
    <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<?php
    include("header.php");
    require('config.php');

    $tableName = "tracking_records";
    $targetpage = "view.php";
    $limit = 10;

    $query = "SELECT COUNT(*) as num FROM $tableName";
    $total_pages = mysql_fetch_array(mysql_query($query));
    $total_pages = $total_pages['num'];

    $stages = 10;

    $getpage = (isset($_GET['page'])) ? (int)$_GET['page'] : 0;
    $page = mysql_escape_string($getpage);

    if($page){
        $start = ($page - 1) * $limit;
    }else{
        $start = 0;
    }

    $query1 = "SELECT * FROM $tableName LIMIT $start, $limit";
    $result = mysql_query($query1) or die(mysql_error());

    if($page == 0){$page = 1;}
    $prev = $page - 1;  
    $next = $page + 1;                          
    $lastpage = ceil($total_pages/$limit);      
    $LastPagem1 = $lastpage - 1;

    $paginate = '';
    if($lastpage > 1){
        $paginate .= "<div class='paginate'>";
        if($page > 1){
            $paginate.= "<a href='$targetpage?page=$prev'>previous</a>";
        }else{
            $paginate.= "<span class='disabled'>previous</span>";
        }
        if($lastpage < 7 + ($stages * 2)){
            for($counter = 1; $counter <= $lastpage; $counter++){
                if($counter == $page){
                    $paginate.= "<span class='current'>$counter</span>";
                }else{
                    $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";
                }           
            }
        }
        elseif($lastpage > 5 + ($stages * 2)){
            if($page < 1 + ($stages * 2)){
                for($counter = 1; $counter < 4 + ($stages * 2); $counter++){
                    if($counter == $page){
                        $paginate.= "<span class='current'>$counter</span>";
                    }else{
                        $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";
                    }
                }
                $paginate.= "...";
                $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
                $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";       
            }
            // Middle hide some front and some back
            elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2)){
                $paginate.= "<a href='$targetpage?page=1'>1</a>";
                $paginate.= "<a href='$targetpage?page=2'>2</a>";
                $paginate.= "...";
                for($counter = $page - $stages; $counter <= $page + $stages; $counter++){
                    if($counter == $page){
                        $paginate.= "<span class='current'>$counter</span>";
                    }else{
                        $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";
                    }                   
                }
                $paginate.= "...";
                $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
                $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";       
            }else{
                $paginate.= "<a href='$targetpage?page=1'>1</a>";
                $paginate.= "<a href='$targetpage?page=2'>2</a>";
                $paginate.= "...";
                for($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++){
                    if($counter == $page){
                        $paginate.= "<span class='current'>$counter</span>";
                    }else{
                        $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";
                    }               
                }
            }
        }
        if($page < $counter - 1){
            $paginate.= "<a href='$targetpage?page=$next'>next</a>";
        }else{
            $paginate.= "<span class='disabled'>next</span>";
        }
        $paginate.= "</div>";
    }
    echo '&nbsp;&nbsp;&nbsp;'.$total_pages.' Results';
    echo $paginate;
?>
<table border='1'>
    <tr>
        <th>Contract #</th><th>Date</th>
        <th>Vessel</th><th>Work Description</th>
        <th>Specs PKG</th><th>Period of Performance</th>
        <th>Required Delivery Date</th><th>IGE Amount</th>
        <th>PM / SBS / MM</th><th>IDIQ</th>
        <th>Solicitation #</th><th>RFP/RFQ Closing Date</th>
        <th>RFP/RFQ Closing Time</th><th>Status</th>
        <th>Award Amount</th><th>Award Date</th>
        <th>Contractor</th><th>Remarks</th>
        <th>Edit / Delete</th>
    </tr>
<?php 
    while($row = mysql_fetch_array($result))
    {
        echo "<tr>
            <td>$row[0]</td><td>$row[1]</td>
            <td>$row[2]</td><td>$row[3]</td>
            <td>$row[4]</td><td>$row[5]</td>
            <td>$row[6]</td><td>$row[7]</td>
            <td>$row[8]</td><td>$row[9]</td>
            <td>$row[10]</td><td>$row[11]</td>
            <td>$row[12]</td><td>$row[13]</td>
            <td>$row[14]</td><td>$row[15]</td>
            <td>$row[16]</td><td>$row[17]</td>
            <td>
                <a href='edit.php?cn=$row[0]'>Edit</a><br />
                <a href='delete.php?cn=$row[0]' onClick=\"return confirm('Delete this record?')\";>Delete</a>
            </td>
        </tr>"; 
    }
    echo "</table>";
    mysql_free_result($result);
    mysql_close($connection);
?>
</body>
</html>

最佳答案

请求完成后,内存将自动释放。

关于php - 使用分页时是否需要使用 mysql_free_result 和 mysql_close? PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38070165/

相关文章:

php - 在 PHP 中将数据从 SQL 转换为字符串

php - 可以在php和unity中使用的加密

javascript - 从 JS 到 PHP;另一个 CORS 问题(似乎是)

python - 使用 Flask 连接 MySQL 时出现 500 Internal Server Error

php - 为什么 getLastRequest 不返回任何东西?

html - CSS: Namespace 一段 HTML

jquery查找具有相同类的所有元素,找到后停止

html - 页面(内容)呈现后呈现字体

php - 无需回发自动从服务器向客户端发送警报消息

php - HTTP发布到MySQL数据库INSERT