学完前端 想试试写个仿站,所以又学了php希望能实现登录注册功能,以下是我的学习笔记
php代码的书写
a. php是一个后端语言
i.运行需要在apache服务器上运行
ii.我们要把php文件写在www目录里面
iii.在浏览器以localhost的形式运行
b. php代码写在一个.php后缀的文件里面
i. .html后缀的文件不认识php代码
c.每一个php文件,必须要写php标签
i. 以<?php开头
ii. 以?>结尾
iii. 所有的php代码写在这个标签中间
d. php文件不允许使用中文命名
i. 如果你用的中文
ii. 那么在服务器上打开的时候就会报错
```
<?php
//简单写一个输出语法,输出一个"hello world"
echo "hello world"
?>
```
php的注释
a. 在php语法里面有两种注释
b. 和js是一样的
i. // 单行注释
ii. /* */ 多行注释
c. 额外在php里面还有一种注释
i. 是以前一直在使用
ii. 最近开始不推荐使用了
iii. #表示注释,也是单行注释
php的输出语句
a. 因为php是一个后端语言,输出和前端不一样
i. 前端输出语法:conlose.log或者alert,就直接反应在浏览器上了
ii. 后端的语法,是谁找后端要的就给谁
1. 当浏览器朝php要的时候,那么php的输出语法就把内容给浏览器
2. 当js这个语言朝php要的时候,那么php的输出语法就把内容给了js
b. php里面的三种输出语法
i. echo 输出内容
1. 只能输出基本数据类型,复杂数据类型会报错;
2. 遇到布尔值的时候,true会输出,false会输出空白内容
ii. print_r(输出内容)
1. 可以输出所有数据类型
2. 遇到布尔值的时候,true会输出1,false会输出空白内容
iii. var_dump(输出内容)
1. 可以输出所有数据类型
2. 遇到布尔值的时候,true会输true,false会输出false
3. 并且会带有数据的类型和数据的信息
php的变量
a. 在js里面我们定义变量使用var关键字
b. 在php里面,我们定义变量没有关键
i. 以$开头就表示是一个变量
c. 当我们定义变量的时候
i. $num = 100
ii. 变量名叫做$num
iii. $不是定义变量的关键字,是变量名的一部分
d. 当你要使用变量的时候
i. 就直接使用$num就可以了
php里面的字符串
a. 在js里面字符串的定义有两种
i. 单引号
ii.双引号
iii. 这两个没有任何区别
b. 在php里面字符串定义也是两种方法
i. 单引号: 就是普通字符串
ii. 双引号: 是一个特殊的字符串,可以字符串里面直接解析变量
c. php里面的字符串拼接
i. 就是把多个字符串连接在一起
1. 我们在js里面的时候,使用加号(+)就能进行字符串拼接
2. 在php里面,加号(+)只能进行数学运算,只有点(.)才能进行字符串拼接
ii. 书写的时候
1. 字符串1.字符串2
// 1 单引号
$age = 18;
$s1 = 'i am $age years old';
echo $s1;//就是普通字符串原样输出
// 2 双引号
$s2 = "i am $age years old";
echo $s2;// 输出 i am 18 years old;
// 3 字符串的拼接
echo 'hello world'.'!'.'你好,世界'.'!';
中文乱码问题
a. 问题是怎么来的?
i. html文件之所以认识中文,是因为有一个charset=utf-8,告诉了浏览器用什么字符集解析文本内容
b. 问题怎么解决
i. 只要我在输出之前,告诉浏览器你用什么字符串格式来解析文本内容
ii. 告诉浏览器字符集格式
1. header(字符集格式)
<?php
//在输出内容之前告诉浏览器你用什么字符串格式来解析文本内容
header('content-type:text/html;charset=utf-8;');
echo "你好,观看这篇文章的朋友们"
?>
php的分支结构
a. 和js一样,有条件分支语句和循环分支语句
i. 条件分支
1. if(){}
2. if(){}else{}
3. switch(){}
ii. 循环结构
1. while(){}
2. do{}while()
3. for(){}
php里面的数组
a.js 里面
i. 数组: [1,2,3,4,5]
ii. 对象: {name: '靓仔', age: 12}
b. php里面
i. 关联型数组
1. 等价于js里面的对象
2. 语法: $arr = array(key1=>value1,key2=>value2,....)
3. 注意:
a. 不管是key还是value,需要用引号包裹,单引号也行,双引号也行
b. 不可以不包裹,如果不用引号包裹,会呗当做变量来使用
c. 中间用的是=>,不是; ,也不是 =
d. 数字和布尔值,不需要引号包裹,可以直接使用
4. 获取关联数组里面的某项数组
a. 数组名称['你要获取的属性名']
ii. 索引型数组
1. 等价于js里面的数组
2. 语法:$arr = array(数据1,数据2,数据3,...)
3. 是按照索引下标进行排序的
4. 如果项单独获取数组里面的某个数据
a. 数组名称[对应的索引]
php的json格式转换
a. 为什么要进行json格式的转换
i. php里面的关联型数组长得和js里面的对象一样
ii. array('name'=>'靓女','age'=>18)
iii. 可以正常传递给前端,但是前端不认识
iv. 转换成一个中间商的样子,转换成一个大家都认识的东西传递过去
v. 都认识的东西就是json格式的字符串
vi. 因为所有的语言json格式是一模一样的
vii. 为了前后端数据交互
b. php转换json格式的两个方法
i. 把php的数据格式转换成json字符串
1. json_encode()
2. 语法: json_encode(要转换的php数据格式)
3. 返回值: 转换好的json数据格式
ii. 把json数组格式转换成php的数据类型
1. json_decode()
2. 语法: json_decode(json数据格式)
3. 返回值: 转换好的php数据格式
php的导入语法
a. 就是把另一个php文件拿到我这里来执行一下
b. 语法:
i. 在这里比如我们要导入base.php文件
ii. include "你要导入的文件路径"
c. 目录:
i. 直接写文件名,表示同级目录
ii. ./也是表示同级目录,推荐这样写
iii. ../表示上一级
<?php
include "./base.php";
?>
php语言操作数据库
a. php操作数据库有一个固定的步骤
1. 连接数据
2. 执行操作
3. 解析结果
4. 断开连接
- 建立和数据库的连接
a. mysqli_connect()这个方法
b. 语法:mysqli_connect(‘IP地址’,‘数据库用户名’,‘数据库密码’,‘你要操作那个sql文件名’)
c. 返回值:一个连接信息,我们看不懂,但是php认识 - 操作数据库
a. mysqli_query() 数据库的增删改查都是使用这一个方法
b. 语法: mysqli_query(数据库连接信息,你要执行的sql语法)
c. 返回值:就是一个查询结果 - 解析结果
A:
a. mysqli_fetch_assoc() 只有查询操作需要解析
b. 语法:mysqli_fetch_assoc(你要解析的数据库查询结果)
c. 返回值:就是解析好的一个结果,是一个关联型数组
d. 注意:这个方法只能解析一个数据
B:
a. mysqli_fetch_all()
b. 能把所有的数据都解析出来,放在一个二维数组里面返回
c. 语法:mysqli_fetch_all(你要解析的数据库查询结果,使用哪种方法解析)
使用哪种方法解析:MYSQLI_ASSOC
d. 返回值:是一个二维数组,里面有所有的数据 - 断开数据库连接
a. mysqli_close()
i. 断开和数据库的连接
ii. 语法:mysqli_close(连接信息)