项目介绍
这是笔者从GITHUB上找的简单PHP程序(用于学习)
这是一个可 增删查 的用户数据管理
数据库连接代码:
先介绍一下数据库的表结构:
1 | <?php |
2 | $pdo = new PDO('mysql:host=localhost;dbname=data','root','root'); //PDO(PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据,比如mysql有limit,MSSQL没有limit,pdo会自动转换) |
3 | $pdo->exec('set names utf8'); //设置编码 |
4 | $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC); //设置默认结果集模式为关联数组 |
5 | $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //修改报错模式 |
6 | ?> |
其中的PDO是:
PDO(PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据,比如mysql有limit,MSSQL没有limit,pdo会自动转换)
PDO好处:
- 更换数据库时取得极大便利(从A数据库换成其他数据库可以不需要修改查询的代码,因为PDO帮我实现了)
- 更换数据库时取得极大便利
首页代码:
1 | |
2 | include 'config.inc.php'; //包含连接数据库的代码 |
3 | |
4 | $len = 10; //每页展现10条数据 |
5 | $page = !empty($_GET["page"]) ? $_GET["page"] : 1;//三元表达式,表示如果$_GET['page']为空时,默认值为1 |
6 | |
7 | $sqlTotal = "select count(Id) from t1"; // SQL语句。意思是查询t1表中的Id字段个数 |
8 | $smtTotal = $pdo->prepare($sqlTotal); //准备要执行的SQL语句并返回一个 PDOStatement 对象(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) |
9 | echo "<strong>\$sqlTotal:</strong>"; |
10 | print_r($smtTotal); |
11 | echo "<br />"; |
12 | |
13 | echo "<strong>execute():</strong>"; |
14 | print_r($smtTotal->execute()); |
15 | $tot = $smtTotal->fetchColumn(); //总记录数 |
16 | echo "<br />"; |
17 | |
18 | echo "<strong>\$tot:</strong>"; |
19 | print_r($tot); |
20 | echo "<br />"; |
21 | |
22 | $pages = ceil($tot/$len); //总页数 |
23 | echo "<strong>\$pages:</strong>"; |
24 | print_r($pages); |
25 | ... ...(省略,先讲解一下这段代码的用法) |
可以看看我写的PDO的(博客里找)
首页的代码我统统写了注释:
更改用户数据代码:
1 |
|
2 | |
3 | /* |
4 | 思路:先获取对应的数据,然后返回到输入框,如果我们选择提交,表单就会发送的数据就会更改到数据库里,实现更改内容 |
5 | */ |
6 | |
7 | |
8 | include 'config.inc.php'; |
9 | $Id = $_GET["Id"]; //获取GET请求过来的Id值 |
10 | |
11 | $sql = "select * from t1 where Id=?"; //SQL语句的查询 |
12 | $smt = $pdo->prepare($sql); //给SQL语句做标记 |
13 | $smt->bindValue(1,$Id); //想成是给上面的?改成$Id变量的值 |
14 | $smt->execute(); //执行SQL语句 |
15 | |
16 | $row = $smt->fetch(); //接收SQL语句查询到的结果 |
17 | |
18 |
|
19 | <!DOCTYPE html> |
20 | <html> |
21 | <head> |
22 | <title>update</title> |
23 | <meta charset="utf-8"> |
24 | </head> |
25 | <script type="text/javascript" src="bower_components/jquery/dist/jquery.min.js"></script> |
26 | <script type="text/javascript" src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script> |
27 | <link rel="stylesheet" type="text/css" href="bower_components/bootstrap/dist/css/bootstrap.min.css"> |
28 | <body> |
29 | <div class="container"> |
30 | <h1 class="page-header"> |
31 | <a href="index.php" class="btn btn-warning">查看用户</a> |
32 | <a href="" class="btn btn-primary">修改用户</a> |
33 | </h1> |
34 | <form action="act.php?act=update&Id=<?php echo $Id;?>" method="post"> <!-- act页面实现的修改功能,这里只需要传入要修改的Id值就可以更改此Id中对应的数据 --> |
35 | <div class="form-group"> |
36 | <label>新用户名:</label> |
37 | <input type="text" class="form-control" name="Name" value=<?php echo "{$row['Name']}";//把查询到的数据的Name返回到输入框中,这样子我们就可以实现修改功能 ?> |
38 | > |
39 | </div> |
40 | <div class="form-group"> |
41 | <label>新密码:</label> |
42 | <input type="text" class="form-control" name="Pwd" value= |
43 | echo "{$row['Pwd']}"; //同上 |
44 | > |
45 | </div> |
46 | <div class="form-group"> |
47 | <input type="submit" class="btn btn-primary"> |
48 | <input type="reset" class="btn btn-danger"> |
49 | </div> |
50 | </form> |
51 | </div> |
52 | </body> |
53 | </html> |
插入数据代码:
1 |
|
2 | <html> |
3 | <head> |
4 | <title>add</title> |
5 | <meta charset="utf-8"> |
6 | </head> |
7 | <script type="text/javascript" src="bower_components/jquery/dist/jquery.min.js"></script> |
8 | <script type="text/javascript" src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script> |
9 | <link rel="stylesheet" type="text/css" href="bower_components/bootstrap/dist/css/bootstrap.min.css"> |
10 | <body> |
11 | <div class="container"> |
12 | <h1 class="page-header"> |
13 | <a href="index.php" class="btn btn-warning">查看用户</a> |
14 | <a href="" class="btn btn-primary">添加用户</a> |
15 | </h1> |
16 | <form action="act.php?act=insert" method="post"> <!-- act.php页面实现了插入功能,所以这里我们只需要把内容提交到act.php就可以完成插入内容 --> |
17 | <div class="form-group"> |
18 | <label>用户名:</label> |
19 | <input type="text" class="form-control" name="Name"> |
20 | </div> |
21 | <div class="form-group"> |
22 | <label>密码:</label> |
23 | <input type="text" class="form-control" name="Pwd"> |
24 | </div> |
25 | <div class="form-group"> |
26 | <input type="submit" class="btn btn-primary"> |
27 | <input type="reset" class="btn btn-danger"> |
28 | </div> |
29 | </form> |
30 | </div> |
31 | </body> |
32 | </html> |
删除功能代码:
删除页面代码也在首页(index.php)里实现的
一般我们删除操作是需要十分谨慎的,因为数据一旦删除是无法恢复的,那么如果用户不小心点到了按钮,我们就应该提醒他是否要删除。
可以看到这里有一个class是delete,然后看到下面有一段提醒是否执行删除的JS代码:
最后我们看看act.php的代码:
1 | |
2 | include 'config.inc.php'; //包含PDO链接数据库代码 |
3 | |
4 | $act = $_GET["act"]; //获取GET请求过来的act值,来实现增、删、改。 |
5 | |
6 | if($act == 'delete'){ //如果是选择删除 |
7 | $Id = $_GET["Id"]; //获取GET请求过来的ID |
8 | $sql = "delete from t1 where Id=?"; //这是SQL语句的删除 |
9 | $smt = $pdo->prepare($sql); //给SQL语句做标记 |
10 | $smt->bindValue(1,$Id); //绑定一个值到用作预处理的 SQL 语句中的对应命名占位符或问号占位符 |
11 | if($smt->execute()){ //判断是否执行成功,如果执行成功返回的是1 |
12 | echo "<script>location='index.php'</script>"; //执行成功就跳转到首页(index.php) |
13 | } |
14 | } |
15 | |
16 | if($act == 'insert'){ //如果是选择插入 |
17 | $Name = $_POST["Name"]; //获取POST请求的Name值 |
18 | $Pwd = $_POST["Pwd"]; //获取POST请求的Pwd值 |
19 | $sql = "insert into t1(Name,Pwd) values('{$Name}','{$Pwd}')"; //这是SQL语句的插入 |
20 | $smt = $pdo->prepare($sql); //给SQL语句做标记 |
21 | if($smt->execute()){ //判断是否执行成功 |
22 | echo "<script>location='index.php'</script>"; //执行成功就跳转到首页(index.php) |
23 | } |
24 | } |
25 | /*如果act=update和id=x,那么就执行修改的SQL语句,修改条件(where)是Id=x*/ |
26 | if($act == 'update'){ //如果是更改 |
27 | $Id = $_GET["Id"]; //获取GET请求的Id值 |
28 | $Name = $_POST["Name"]; //获取POST的Name值 |
29 | $Pwd = $_POST["Pwd"]; //获取POST请求的Pwd值 |
30 | $sql = "update t1 set Name='{$Name}',Pwd='{$Pwd}' where Id={$Id}"; //这是SQL语句的更改 |
31 | $smt = $pdo->prepare($sql); //给SQL语句做标记 |
32 | if($smt->execute()){ //判断是否执行成功 |
33 | echo "<script>location='index.php'</script>"; //如果执行成功就跳转到首页(index.php) |
34 | } |
35 | } |
36 | |
37 | |
38 | |