ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PHP操作数据分页

2021-09-05 20:03:10  阅读:252  来源: 互联网

标签:分页 echo link nbsp mysqli 操作 PHP page logs


PHP操作数据分页

一、数据库安全

string addslashes ( string $str )
返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。 

一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符:O\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \。当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。 

默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。 

二、分页

首先说一下分页的核心思想:首先当前页,页面大小,总记录数。这个三个数值可以通过总记录数和页面大小,我们就可以计算出总的页数。

# 1、连接MySQL服务器
$link = @mysqli_connect('localhost','root','123456','school');

if(!$link){
    $logs = date('Y-m-d H:i:s');
    $logs .= ' mysql错误编码:'.mysqli_connect_errno().'错误信息:'.mysqli_connect_error();
    file_put_contents('mysql_error.log',$logs . PHP_EOL,FILE_APPEND);
    exit('亲 MySQL连接失败!');
}

# 2、设置字符集
if( !mysqli_set_charset($link,'utf8') ){
    $logs = date('Y-m-d H:i:s');
    $logs .= ' mysql错误编码:'.mysqli_errno($link).'错误信息:'.mysqli_error($link);
    file_put_contents('mysql_error.log',$logs . PHP_EOL,FILE_APPEND);
}

1、总记录数

// 获取总的记录数  
$sql_total_records = "select count(*) from innodb_table_stats"; 
$total_records_result = mysqli_query($link,$sql_total_records); 
$total_records = mysqli_fetch_row($total_records_result); 
echo  "总的记录数位: ".$total_records[0]."<br>";

2、当前页

# 通过GET方式获取客户端访问的页码
$current_page = isset($_GET['page_number']) ?$_GET['page_number'] : 1;

if( $current_page < 1 ){
      $current_page = 1;
}
if( $current_page > $total_pages ){
   $current_page = $total_pages
}

3、分页核心

$begin_position = ($current_page_number-1) * $page_size;
$sql = "select * from tb_user limit $begin_position,$page_size";
$result = mysqli_query($link,$sql);

4、页面展示

echo '<a href="index.php?page_number=1">首页</a>&nbsp;&nbsp;';
for($i=1;$i<=$total_pages;$i++){
    echo '<a href="./index.php?page_number='.$i.'">第'.$i.'页</a>&nbsp;&nbsp;';    
}
echo '<a href="index.php?page_number='.($current_page_number-1).'">上一页</a>&nbsp;&nbsp;';
echo '<a href="index.php?page_number='.($current_page_number+1).'">下一页</a>&nbsp;&nbsp;';
echo '<a href="index.php?page_number='.($total_pages).'">尾页</a>&nbsp;&nbsp;';

贡献代码

header('content-type:text/html;charset=utf-8');

# 1、连接MySQL服务器
$link = @mysqli_connect('localhost','root','123456','school');

if(!$link){
    $logs = date('Y-m-d H:i:s');
    $logs .= ' mysql错误编码:'.mysqli_connect_errno().'错误信息:'.mysqli_connect_error();
    file_put_contents('mysql_error.log',$logs . PHP_EOL,FILE_APPEND);
    exit('亲 MySQL连接失败!');
}

# 2、设置字符集
if( !mysqli_set_charset($link,'utf8') ){
    $logs = date('Y-m-d H:i:s');
    $logs .= ' mysql错误编码:'.mysqli_errno($link).'错误信息:'.mysqli_error($link);
    file_put_contents('mysql_error.log',$logs . PHP_EOL,FILE_APPEND);
}
//--------------------------------------------------------------------------
# 获取总记录数
$t_sql = "select count(*) as t from student";
$res = mysqli_query($link,$t_sql);
$row = mysqli_fetch_assoc($res);
$total = $row['t'];

# 每页显示多少记录
$pageRows = 2;

# 获取总页数
$tPage = ceil($total/$pageRows);

# 根据当前页码 来生成查询用的SQL
if(isset($_GET['p']) && intval($_GET['p'])){
    $page = $_GET['p'] > $tPage ? $tPage : $_GET['p'];
}else{
    $page = 1;
}

$start = ($page-1)*$pageRows;
$sql = "select * from student limit $start,$pageRows";

//------------------------------------------------------------------

# 4、执行SQL  $result 查询出来的结果集
$result = mysqli_query($link,$sql);

echo '<table border="1" width="600" align="center">';
while($rows = mysqli_fetch_assoc($result)){
    echo '<tr>
        <td>'.$rows['sno'].'</td>
        <td>'.$rows['sname'].'</td>
        <td>'.$rows['ssex'].'</td>
        <td>'.$rows['sbirthday'].'</td>
        <td>'.$rows['class'].'</td>
    </tr>';
}
echo '</table>';

# 5、收功
mysqli_free_result($result);

# 6、关闭数据库连接
mysqli_close($link);

?>
<style>
 a {
    border:1px solid red;
    padding:2px;
    margin-right:3px;
    text-decoration:none;
 }
</style>
<div style="width:500px;margin:20px auto;">
<?php
    echo "<a href='page.php?p=1'>首页</a>";
    echo "<a href='page.php?p=".($page-1)."'>上一页</a>";
    for($i=1;$i<=$tPage;$i++){
        echo "<a href='page.php?p=$i'>$i</a>";
    }
    echo "<a href='page.php?p=".($page+1)."'>下一页</a>";
    echo "<a href='page.php?p=$tPage'>尾页</a>";
?>
</div>


来自为知笔记(Wiz)

标签:分页,echo,link,nbsp,mysqli,操作,PHP,page,logs
来源: https://www.cnblogs.com/chengwens/p/11fdf881a0577740ecf07ade2a57855f.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有