@1kbfree
2018-05-24T22:43:05.000000Z
字数 4841
阅读 1241
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好处:
<?php
include '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
/*
思路:先获取对应的数据,然后返回到输入框,如果我们选择提交,表单就会发送的数据就会更改到数据库里,实现更改内容
*/
<?php
include '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代码:
<?php
include '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()){ //判断是否执行成功,如果执行成功返回的是1
echo "<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)
}
}
?>