后端php步骤
1.连接数据库
2.接收前端发送过来的参数
3.执行sql语句
4.进行逻辑判断,返回结果
5.关闭数据库连接
- 基本所有操作都会引入的文件 connect
引入文件
// 引入数据库库连接 和 跨域文件
require_once "./connect.php";
require_once './cross.php';
设置编码格式
// 设置编码格式 ===== 支持中文===== PHP设置格式
header('Content-Type: text/html;charset=utf-8');
连接数据库
// 连接数据库
$conn = mysqli_connect('148.70.210.32','用户名','密码','仓库',3306) or die('Error');
接收参数
// PHP获取浏览器参数:
$_POST['参数字段名'] or $_GET['参数字段名']
删除某个属性
unset($data['属性名']);
执行sql语句
//执行sql语句:
$data = mysqli_query($conn,"SELECT * FROM table_name");
//获取一条数据
$row=mysqli_fetch_assoc($data)
//遍历所有返回数据
while($row=mysqli_fetch_assoc($data)){
echo '用户名:'.$row['username'].' 密码:'.$row['pwd'].'<br/>';
}
// 总数据条数:
mysqli_num_rows($sql)
PHP重定向浏览器页面
//跳转页面
// 是否带参数 登录失败就可以要求带参数 原页跳转
header("Location: http://xxxxxx/login.html?iserror=true");
PHP对象转JSON格式
json_encode($xxxx);
PHP开启session
1.php.ini里把session.auto_start = 0设置为session.auto_start = 1 开启session记录
2.设置session过期时间
php.ini内,session.cookie_lifetime = 600 单位:秒
PHP session设置值/取值
$_SESSION['username'] 取值
$_SESSION['username'] = 'zhangsan' 设置值
PHP 清除session某个属性值
unset($_SESSION['属性名']);
//销毁整个session对象
session_destroy();
PHP创建数组对象
$arr = array(
array('name' => 'zhangsan','age' => 18),
array('name' => 'lisi','age' => 23)
);
PHP创建对象
$obj = (object) [
'list' => $list,
'totallength' => 10,
];
PHP解决跨域
// 后台新增如下代码
<?php
header("Access-Control-Allow-Origin: http://localhost:8888");
header('Access-Control-Allow-Headers:Authorization');
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,Authorization");
-
http://localhost:8888
此处注意要根据实际情况设置允许跨域的网址
前端发送ajax请求新增属性
$.ajax({
type: 'get',
url: 'http://localhost:80/unsession.php',
xhrFields: {
withCredentials: true
},
crossDomain: true,
success(res){
console.log(res)
}
})
增加crossDomain
和xhrFields
属性
数据库-----增删改查
```
增加:
INSERT INTO table_name(key,key1,key2) VALUES(value,value1,value2)
删除:
DELETE FROM table_name WHERE condition;
修改:
UPDATE table_name SET field1=newvalue, field2=newvalue WHERE runoob_id=3;
查询:
SELECT * FROM table_name WHERE 参数
示例:SELECT * FROM table_name WHERE username='zhangsan' && pwd='12'
```
获取时间
// 注意点1: h:i:s 获取12小时时间 H:i:s 获取24小时时间
// 注意点2: date_default_timezone_set("Asia/Shanghai") 设置时区
// echo date("Y/m/d H:i:s");
// 设置时区 是为了将php中获取的时间 设为中国时间 ---- 东八区
// 设置时区!!!!!!!(请记住一定要设置时区!!!!不然是以柏林标准时间为准00:00:00开始)
date_default_timezone_set("Asia/Shanghai");
// 获取当前时间
$date = date("Y/m/d H:i:s");
高级用法
联合查询
select b.*, u.username from borrowmoney b join user u on b.userid=u.id
分页查询
SELECT * FROM table_name LIMIT 5,10; // 检索指定记录,从索引5开始,找到10条数据
获取数据条数
SELECT COUNT(*) FROM table_name
分页完整后端php代码
<?php
require_once "./connect.php";
require_once './cross.php';
$curpage = $_GET['curpage']; // 参数1: 当前页数
$pagecell = $_GET['pagecell']; // 参数2: 每页显示的条数
$starIndex = ($curpage - 1 ) * $pagecell; // 起始索引
$sql = "select b.*, u.nickname from borrow b join user u on b.userid=u.id LIMIT $starIndex,$pagecell";
$data = mysqli_query($conn,$sql); // 执行sql语句
$arr = []; //定义数组保存数据
/* 循环数据 */
while($row=mysqli_fetch_assoc($data)){
array_push($arr, $row); //向数组中追加元素
}
/* $arr: 数据源,总页数 = 向上取整(总数据条数 / 每页显示条数) */
/* 计算总页数 */
$data1 = mysqli_query($conn,"SELECT COUNT(*) FROM borrow"); //获取表总数据条数
$row1 = mysqli_fetch_assoc($data1);
$maxpage = $row1['COUNT(*)'] / $pagecell;
// 封装数据 ========= 前端接到的数据将会是一个对象
$obj = (object) [
'arr' => $arr, //数据源
'maxpage' => ceil($maxpage), //最大页数
];
echo json_encode($obj);
?>
带条件联合查询
// 联合查询 待条件 主表的id 查询
$data = mysqli_query($conn,"select b.*, u.nickname, u.education, u.income, u.regtime from borrow b join user u on b.userid=u.id where b.id=$borrowid");
查询需要的字段
$sql ="SELECT username,nickname,totalmoney,usablemoney,blockedmoney,lastlogintime,education,income,email,phone FROM user WHERE id=$userId";
获取session 数据
// 配置时间过后,会自动销毁session对象 ===== 容错性 ===== 如果session存在则获取登录用户 ,如果不存在( 未登录 )
if($_SESSION){
// 有session
echo $_SESSION['loginacc'];
}else{
// 没有session
echo 'nosession';
}
投资:a扣款然后b加钱(后端代码)
// 1.验证当前用户余额是否足够!(如果足够才继续往下)
$id = $_SESSION['id']; //当前用户
$investMoney = $_GET['investMoney']; //用户投资的金额
$borrowid = $_GET['borrowid']; //当前订单ID
$searchData = mysqli_query($conn,"SELECT totalmoney FROM user where id=$id");
$searchRow = mysqli_fetch_assoc($searchData);
// $searchRow['totalmoney'] //当前用户余额
if($searchRow['totalmoney'] >= $investMoney){
//金额足够,才继续
/* ----------------------------------- 2.扣除当前用户的金额 ------------------------------------- */
$newmoney = $searchRow['totalmoney'] - $investMoney; //计算用户的最新金额
$result = mysqli_query($conn,"UPDATE user SET totalmoney=$newmoney WHERE id=$id");
if($result){
//扣款成功!
/* ----------------------------------- 3.给当前订单增加金额 ------------------------------------- */
$nowborrowData = mysqli_query($conn,"SELECT hasbmoney FROM borrow where id=$borrowid");
$nowbData = mysqli_fetch_assoc($nowborrowData);
// $nowbData['hasbmoney']; //当前订单的投资金额
//计算最新金额
$endmoney = $nowbData['hasbmoney'] + $investMoney;
$borrowResult = mysqli_query($conn,"UPDATE borrow SET hasbmoney=$endmoney WHERE id=$borrowid");
if($borrowResult){
echo '全部操作成功!';
}else{
echo '订单金额更新失败!';
}
}else{
echo '扣款失败!';
}
}else{
echo 'fail';
}
登录
//$sql = "SELECT * FROM user WHERE username='".$acc."'&& pwd='".$pwd."'";
$sql="select * from user where username= '$acc' && pwd= '$pwd'";
// 4. 执行sql语句
// 有返回结果 select ==== 正确就返回结果集(数组对象),错误就返回false
$data=mysqli_query($conn,$sql);
#echo json_encode($result);
$length = mysqli_num_rows($data);
// 根据结果响应数据给前端
if ($length == 0){
// 查无此人
header("location:http://192.168.3.11:8888/login.html?error=true");
}else{
// 通过验证 === 跳转到首页
header("location:http://192.168.3.11:8888/");
// 获取当前时间
$date = date("Y/m/d H:i:s");
// 从查询结果集中 获取一行数据 ==== 为了获得id
$row = mysqli_fetch_assoc($data);
// 把用户名写入到session中 ======= 保存用户登录状态 ===== 一般10-15min ========= 服务器存储
$_SESSION['loginacc'] = $acc;
// 写入用户ID
$_SESSION['id'] = $row['id'];
// 写入最后登录时间
$result = mysqli_query($conn,"UPDATE user SET lastlogintime='$date' WHERE id=".$row['id']);
网友评论