01 .静态页面和动态页面的区分
- 静态页面:所有的数据和结构都是写在前端
- 动态页面:页面的数据都是由后端提供,然后前端渲染
02 .网站的基本组织结构
- 前端:客户端,编写样式和结构 数据的渲染,用户操作的一切功能都在前端实现
- 后端:服务端,主要提供数据接口,把数据从数据库中获取出来,数据的处理,然后再把数据传递给前端
- 数据库:提供数据仓库
03 . PHP的基本语法
- 所有的php代码写在一个php后缀的文件里面
- php的代码必须有分号结束
- php定义变量:变量前面必须使用 $
<?php
$name=10;
?>
-
php的输出
- echo 输出变量的值(只能输出简单的数据类型)
- var_dump() 输出变量的值并且显示类型
- print_r() 可以输出任意数据类型的值
-
php中文乱码的问题
header('content-type:text/html;charset=utf-8;');
-
php中的数组
- 索引型数组:
array(1,2,3);
- 关系型数组:
array('name'=>'Jack','age'=>18);
- 向数组中添加数据:
array_push(需要添加数据的数组,数据);
- PHP 转换 json 格式使用
json_encode
=> 把自己的数据类型转成 json 格式的字符串json_decode
=> 把 json 格式的字符串转成给自己的数据类型
- 索引型数组:
<?php
// PHP中数组的分类:
// 索引型数组:
// $arr = array('1','2','3');
// $arr[2] = 'a';
// print_r($arr[2]);
// 关系型数组: 跟js中对象差不多一样
// $arr = array('name'=>'老谢','age'=>48);
// 获取数组中name属性对应的值
// print_r($arr['name']);
/*
[{
name:'aaa'
},{
name:'bbb'
}]
*/
// 往数组中添加数据
// array_push(数组,数据)
$arr = array();
// array_push($arr,'1');
array_push($arr,array('name'=>'老谢'));
// PHP的数据类型 前端识别不了
// 需要把PHP的数据转化为 json
// 把PHP数据转化为json数据 json_encode(数据)
// 把json数据转化为PHP数据 json_decode(数据)
// $json = '[{"name":"aaa"}]';
// json_unescaped_unicode
// 当PHP转化为json有中文的时候 会出现乱码情况 需要添加 JSON_UNESCAPED_UNICODE
$res = json_encode($arr,JSON_UNESCAPED_UNICODE);
// $res = json_decode($json);
print_r($res);
?>
04 .php连接数据库
(1)连接数据库
$con = mysqli_connect("localhost","root","123456","students")
- 参数1:localhost|127.0.0.1本地的IP地址
- 参数2:数据库的用户名
- 参数3:数据库的密码
- 参数4:你要连接的库
(2)设置对应的SQL语句
'SELECT * FROM 表名'
(3)执行SQL语句
mysqli_query($con,$sql)
(4)解析处理执行SQL语句的结构
mysqli_fetch_row()
解析你结果中的第一条,以 索引型数组 的形式返回
mysqli_fetch_array()
解析你结果中的第一条,以 组合型数组 的形式返回 就是把你的字段名称 + 值全部放在数组里面
mysqli_fetch_assoc()
解析你结果中的第一条,以 关联型数组 的形式返回
(5)关闭数据库的连接
<?php
/*
【1】链接数据库
$con = mysqli_connect()
【2】设置SQL语句
在mysql语句中写好之后再复制过来 放在双引号
表名 一定要用反引号引起来
【3】执行SQL语句
$res = mysqli_query($con,$sql)
【4】返回的数据SQL结构(需要把SQL结构的数据转化为php数据)
myslqi_fetch_assoc($res); 一次只会处理一条
需要用循环
【5】关闭数据库链接
mysqli_close($con)
*/
$con = mysqli_connect('localhost','root','123456','login');
$sql = "SELECT * FROM `user`";
$res = mysqli_query($con,$sql);
// print_r($res);
// 处理返回的结果 只会得到结果中第一条数据
// $row = mysqli_fetch_row($res);
// $row = mysqli_fetch_array($res);
// $row = mysqli_fetch_assoc($res);
// $row2 = mysqli_fetch_assoc($res);
// $row3 = mysqli_fetch_assoc($res);
// print_r($row);
// print_r($row2);
// print_r($row3);
//定义一个空数组 用于存储 处理的结果
$arr = array();
$row = mysqli_fetch_assoc($res);
while($row){
// 把处理的结果添加到 数组
array_push($arr,$row);
$row = mysqli_fetch_assoc($res);
}
print_r(json_encode($arr,JSON_UNESCAPED_UNICODE));
mysqli_close($con);
?>
05 .常用的SQL语句
- 增:
- ‘INSERT INTO
student
VALUES()’ - ‘INSERT INTO
student
(属性
,属性
) VALUES(“属性值”, 属性值)’
- ‘INSERT INTO
<?php
$con = mysqli_connect('localhost','root','123456','login');
// $sql = "INSERT INTO `user` (`id`, `username`, `password`, `tel`) VALUES (null, '婉婉', '', null)";
// 可以忽略 字段不写
$sql = "INSERT INTO `user` VALUES (null, '田田', '123123', null)";
$res = mysqli_query($con,$sql);
if(!$res){
die('数据查询错误' . mysqli_error($con));
}
// 当添加成功的时候 返回值为一个 1(true)
print_r($res);
?>
- 删:
- ‘DELETE FROM
student
WHEREid
=1’;
- ‘DELETE FROM
- 改:
- ‘UPDATE
student
SETname
=“张三”,age
=10 WHEREid
=1’ ,更新一条 id 为 1 的数据中的 name 字段的值和 age 字段的值
- ‘UPDATE
- 查
- 精确查找
- 模糊查找: LINK %字符%
# 下面表示查询表中所有数据里面 name 字段中包含 "三" 字的数据
$sql = 'SELECT * FROM `student` WHERE `name` LIKE "%三%"';
# 查询排序,查询的时候按照某一个字段升序或降序排序
$sql = 'SELECT * FROM `student` ORDER BY `age` ASC';
$sql = 'SELECT * FROM `student` ORDER BY `age` DESC';
# ASC:升序
# DESC:降序
<?php
$con = mysqli_connect('localhost','root','123456','login');
// 查询id=3的这个条数据
// $sql = "SELECT * FROM `student` WHERE `id`=3";
// 查询到时 age=20的所有数据
// $sql = "SELECT * FROM `student` WHERE `age`=20";
//查询年龄 20 并且性别为 女 AND 链接两个条件
// $sql = "SELECT * FROM `student` WHERE `age`=20 AND `gender`='女'" ;
// 查询名字中带三的数据
// $sql = "SELECT * FROM `student` WHERE `name` LIKE '%三%'";
// 按照age属性的 升序排序
// $sql = "SELECT * FROM `student` WHERE `name` LIKE '%三%' ORDER BY `age` ASC";
// 按照 age属性的降序排序
$sql = "SELECT * FROM `student` WHERE `name` LIKE '%三%' ORDER BY `age` DESC";
$res = mysqli_query($con,$sql);
if(!$res){
// die() PHP中错误的拦截,die后面的代码都不会被执行
// . PHP中用来拼接字符串
// mysqli_error($con) 显示数据库中的错误
die('数据查询错误' . mysqli_error($con));
}
$arr = array();
$row = mysqli_fetch_assoc($res);
while($row){
array_push($arr,$row);
$row = mysqli_fetch_assoc($res);
}
print_r(json_encode($arr,JSON_UNESCAPED_UNICODE));
?>
简单登录案例
- 前端点击登录按钮的时候 把用户名和密码传递 给后端
- 后端获取前端传过来的用户名 和密码去数据库进行匹配
- 如果传过去的用户名和密码都正确跳转到首页(PHP 控制跳转前端页面:header(‘location:./index.html’))
- 如果传过去的用户名和密码有其中一个不正确都提示用户名和密码错误
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<form action="./login.php" method="POST">
<label for="">用户名:</label>
<input type="text" name="username" />
<br />
<label for="">密码:</label>
<input type="text" name="password" />
<button>登录</button>
</form>
<script>
// document.cookie = "username=aaa";
</script>
</body>
</html>
list.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div>我是列表页,登录成功之后跳转到这个页面</div>
</body>
</html>
login.php
<?php
$user = $_POST['username'];
$pass = $_POST['password'];
// print_r($user);
// print_r($pass);
$con = mysqli_connect('localhost','root','123456','login');
$sql = "SELECT * FROM `user` WHERE `username`='$user' AND `password`='$pass'" ;
$res = mysqli_query($con,$sql);
if(!$res){
die('数据查询错误' . mysqli_error($con));
}
$row = mysqli_fetch_assoc($res);
if($row){
print_r(array('code'=>true,'msg'=>'登录成功'));
// 表示登录成功 跳转到list页面
header('location:./list.html');
}else{
$arr = array('code'=>false,'msg'=>'用户名或者密码错误');
print_r(json_encode($arr,JSON_UNESCAPED_UNICODE));
}
?>