PHP编程:MySQL数据库操作与分页实现
需积分: 10 153 浏览量
更新于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`子句实现类似功能。
2016-05-12 上传
2011-10-25 上传
2011-10-07 上传
2016-05-29 上传
2010-12-09 上传
2015-10-31 上传
2015-04-22 上传
ameng1155
- 粉丝: 0
- 资源: 1
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫