PHP编程:MySQL数据库操作与分页实现

需积分: 10 9 下载量 29 浏览量 更新于2024-11-06 收藏 15KB TXT 举报
"这是一个收集了常用PHP代码的集合,包括连接MySQL数据库、查询数据以及实现分页功能的示例。" 在PHP中,与MySQL数据库交互是常见的任务之一。以下是一些核心知识点: 1. 连接MySQL数据库: ```php $connect = mysql_connect("localhost", "root", "") or die("无法连接数据库".mysql_error()); mysql_select_db("liuyanben", $connec) or die("选择数据库失败:".mysql_error()); mysql_query("setnames 'gbk'"); ``` 这段代码展示了如何使用`mysql_connect()`函数连接到本地的MySQL服务器,参数分别为服务器地址(默认为localhost)、用户名和密码。如果连接失败,`die()`函数会终止脚本并显示错误信息。接着,`mysql_select_db()`用于选择要操作的数据库。最后,`mysql_query("setnames 'gbk'")`设置字符集为GBK,确保数据正确编码。 2. 查询数据库并显示结果: ```php $sql = "select * from liuyan order by ly_id desc"; $conn = mysql_query($sql, $connec); while ($rs = mysql_fetch_array($conn)) { // 输出数据 } ``` 这部分代码定义了一个SQL查询,用于从`liuyan`表中选择所有列,并按`ly_id`字段降序排列。`mysql_query()`执行SQL语句,返回一个结果集。`mysql_fetch_array()`遍历结果集,每次循环获取一行数据并存储在数组`$rs`中。 3. 分页功能: 分页功能通常用于处理大量数据,避免一次性加载所有记录导致页面加载缓慢。 - `genpage`函数负责计算总页数和当前页的数据范围: ```php function genpage(&$sql, $page_size = 2) { global $prepage, $nextpage, $pages, $sums; // outparam $page = $_GET["page"]; $eachpage = $page_size; $pagesql = strstr($sql, "from"); $pagesql = "select count(*) as ids" . $pagesql; $conn = mysql_query($pagesql) or die(mysql_error()); if ($rs = mysql_fetch_array($conn)) $sums = $rs[0]; $pages = ceil(($sums - 0.5) / $eachpage) - 1; $pages = $pages >= 0 ? $pages : 0; $prepage = ($page > 0) ? $page - 1 : 0; $nextpage = ($page < $pages) ? $page + 1 : $pages; $startpos = $page * $eachpage; $sql .= " limit $startpos, $eachpage"; } ``` 这个函数接收SQL查询字符串和每页显示的记录数作为参数。它首先计算总记录数,然后根据记录数和每页大小计算总页数。同时,确定前一页和后一页的页码。最后,修改原始SQL语句,添加`LIMIT`子句来获取当前页的数据。 - `showpage`函数负责展示分页链接: ```php function showpage() { global $page, $pages, $prepage, $nextpage, $queryString; // param from genpage function $shownum = 10 / 2; $startpage = ($page >= $shownum) ? $page - $shownum : 1; ... } ``` 此函数用于生成分页导航链接。它会显示当前页附近的页码,帮助用户导航到不同页。 请注意,上述代码中的`mysql_*`函数系列在PHP 7.0及更高版本中已被废弃,推荐使用`mysqli`或`PDO`扩展进行数据库操作,以获得更好的性能和安全性。例如,使用`mysqli`重写连接和查询代码如下: ```php $mysqli = new mysqli("localhost", "root", "", "liuyanben"); if ($mysqli->connect_error) { die("连接失败: " . $mysqli->connect_error); } $mysqli->set_charset('gbk'); $sql = "SELECT * FROM liuyan ORDER BY ly_id DESC"; $result = $mysqli->query($sql); while ($row = $result->fetch_assoc()) { // 输出数据 } $result->free(); $mysqli->close(); ``` 对于分页,可以使用`mysqli`的`ROW_COUNT`属性和`LIMIT`子句实现类似功能。