PHP编程:MySQL数据库操作与分页实现
需积分: 10 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`子句实现类似功能。
2016-05-12 上传
2011-10-25 上传
2011-10-07 上传
2016-05-29 上传
2010-12-09 上传
ameng1155
- 粉丝: 0
- 资源: 1
最新资源
- WordPress作为新闻管理面板的实现指南
- NPC_Generator:使用Ruby打造的游戏角色生成器
- MATLAB实现变邻域搜索算法源码解析
- 探索C++并行编程:使用INTEL TBB的项目实践
- 玫枫跟打器:网页版五笔打字工具,提升macOS打字效率
- 萨尔塔·阿萨尔·希塔斯:SATINDER项目解析
- 掌握变邻域搜索算法:MATLAB代码实践
- saaraansh: 简化法律文档,打破语言障碍的智能应用
- 探索牛角交友盲盒系统:PHP开源交友平台的新选择
- 探索Nullfactory-SSRSExtensions: 强化SQL Server报告服务
- Lotide:一套JavaScript实用工具库的深度解析
- 利用Aurelia 2脚手架搭建新项目的快速指南
- 变邻域搜索算法Matlab实现教程
- 实战指南:构建高效ES+Redis+MySQL架构解决方案
- GitHub Pages入门模板快速启动指南
- NeonClock遗产版:包名更迭与应用更新