@1kbfree
        
        2018-05-24T14:43:05.000000Z
        字数 4841
        阅读 1710
    PHP项目分析

这是笔者从GITHUB上找的简单PHP程序(用于学习)
 
这是一个可 增删查 的用户数据管理
先介绍一下数据库的表结构:

<?php$pdo = new PDO('mysql:host=localhost;dbname=data','root','root'); //PDO(PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据,比如mysql有limit,MSSQL没有limit,pdo会自动转换)$pdo->exec('set names utf8'); //设置编码$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC); //设置默认结果集模式为关联数组$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //修改报错模式?>
PDO(PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据,比如mysql有limit,MSSQL没有limit,pdo会自动转换)
PDO好处:
<?phpinclude 'config.inc.php'; //包含连接数据库的代码$len = 10; //每页展现10条数据$page = !empty($_GET["page"]) ? $_GET["page"] : 1;//三元表达式,表示如果$_GET['page']为空时,默认值为1$sqlTotal = "select count(Id) from t1"; // SQL语句。意思是查询t1表中的Id字段个数$smtTotal = $pdo->prepare($sqlTotal); //准备要执行的SQL语句并返回一个 PDOStatement 对象(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)echo "<strong>\$sqlTotal:</strong>";print_r($smtTotal);echo "<br />";echo "<strong>execute():</strong>";print_r($smtTotal->execute());$tot = $smtTotal->fetchColumn(); //总记录数echo "<br />";echo "<strong>\$tot:</strong>";print_r($tot);echo "<br />";$pages = ceil($tot/$len); //总页数echo "<strong>\$pages:</strong>";print_r($pages);... ...(省略,先讲解一下这段代码的用法)

可以看看我写的PDO的文章(别夸我,谁让我是爱学习的好孩子)

<?php/*思路:先获取对应的数据,然后返回到输入框,如果我们选择提交,表单就会发送的数据就会更改到数据库里,实现更改内容*/<?phpinclude 'config.inc.php';$Id = $_GET["Id"]; //获取GET请求过来的Id值$sql = "select * from t1 where Id=?"; //SQL语句的查询$smt = $pdo->prepare($sql); //给SQL语句做标记$smt->bindValue(1,$Id); //想成是给上面的?改成$Id变量的值$smt->execute(); //执行SQL语句$row = $smt->fetch(); //接收SQL语句查询到的结果?><!DOCTYPE html><html><head><title>update</title><meta charset="utf-8"></head><script type="text/javascript" src="bower_components/jquery/dist/jquery.min.js"></script><script type="text/javascript" src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script><link rel="stylesheet" type="text/css" href="bower_components/bootstrap/dist/css/bootstrap.min.css"><body><div class="container"><h1 class="page-header"><a href="index.php" class="btn btn-warning">查看用户</a><a href="" class="btn btn-primary">修改用户</a></h1><form action="act.php?act=update&Id=<?php echo $Id;?>" method="post"> <!-- act页面实现的修改功能,这里只需要传入要修改的Id值就可以更改此Id中对应的数据 --><div class="form-group"><label>新用户名:</label><input type="text" class="form-control" name="Name" value=<?php echo "{$row['Name']}";//把查询到的数据的Name返回到输入框中,这样子我们就可以实现修改功能 ?>></div><div class="form-group"><label>新密码:</label><input type="text" class="form-control" name="Pwd" value=<?php echo "{$row['Pwd']}"; //同上?>></div><div class="form-group"><input type="submit" class="btn btn-primary"><input type="reset" class="btn btn-danger"></div></form></div></body></html>
<!DOCTYPE html><html><head><title>add</title><meta charset="utf-8"></head><script type="text/javascript" src="bower_components/jquery/dist/jquery.min.js"></script><script type="text/javascript" src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script><link rel="stylesheet" type="text/css" href="bower_components/bootstrap/dist/css/bootstrap.min.css"><body><div class="container"><h1 class="page-header"><a href="index.php" class="btn btn-warning">查看用户</a><a href="" class="btn btn-primary">添加用户</a></h1><form action="act.php?act=insert" method="post"> <!-- act.php页面实现了插入功能,所以这里我们只需要把内容提交到act.php就可以完成插入内容 --><div class="form-group"><label>用户名:</label><input type="text" class="form-control" name="Name"></div><div class="form-group"><label>密码:</label><input type="text" class="form-control" name="Pwd"></div><div class="form-group"><input type="submit" class="btn btn-primary"><input type="reset" class="btn btn-danger"></div></form></div></body></html>
删除页面代码也在首页(index.php)里实现的 
 
一般我们删除操作是需要十分谨慎的,因为数据一旦删除是无法恢复的,那么如果用户不小心点到了按钮,我们就应该提醒他是否要删除。
 
可以看到这里有一个class是delete,然后看到下面有一段提醒是否执行删除的JS代码: 

<?phpinclude 'config.inc.php'; //包含PDO链接数据库代码$act = $_GET["act"]; //获取GET请求过来的act值,来实现增、删、改。if($act == 'delete'){ //如果是选择删除$Id = $_GET["Id"]; //获取GET请求过来的ID$sql = "delete from t1 where Id=?"; //这是SQL语句的删除$smt = $pdo->prepare($sql); //给SQL语句做标记$smt->bindValue(1,$Id); //绑定一个值到用作预处理的 SQL 语句中的对应命名占位符或问号占位符if($smt->execute()){ //判断是否执行成功,如果执行成功返回的是1echo "<script>location='index.php'</script>"; //执行成功就跳转到首页(index.php)}}if($act == 'insert'){ //如果是选择插入$Name = $_POST["Name"]; //获取POST请求的Name值$Pwd = $_POST["Pwd"]; //获取POST请求的Pwd值$sql = "insert into t1(Name,Pwd) values('{$Name}','{$Pwd}')"; //这是SQL语句的插入$smt = $pdo->prepare($sql); //给SQL语句做标记if($smt->execute()){ //判断是否执行成功echo "<script>location='index.php'</script>"; //执行成功就跳转到首页(index.php)}}/*如果act=update和id=x,那么就执行修改的SQL语句,修改条件(where)是Id=x*/if($act == 'update'){ //如果是更改$Id = $_GET["Id"]; //获取GET请求的Id值$Name = $_POST["Name"]; //获取POST的Name值$Pwd = $_POST["Pwd"]; //获取POST请求的Pwd值$sql = "update t1 set Name='{$Name}',Pwd='{$Pwd}' where Id={$Id}"; //这是SQL语句的更改$smt = $pdo->prepare($sql); //给SQL语句做标记if($smt->execute()){ //判断是否执行成功echo "<script>location='index.php'</script>"; //如果执行成功就跳转到首页(index.php)}}?>