JS从入门到精通全套完整版p=288
什么是服务器 ?
+ 一个 提供 服务的 机器
+ 什么是服务 ?
=> 根据需求给出对应的内容
=> 接口: 根据不同的需求, 给出不同的数据
=> 文件: 根据不同的请求, 给出不同的文件数据(html, css, js, 视音频, ...)
+ 就是一台特殊的电脑
=> 当一个电脑上安装了某些 "软件" 的时候, 那么这个电脑就可以作为服务器
=> 真实的服务器是由你的电脑上有没有运行某些 "软件" 来决定的
学习的内容
+ AMP 一套
=> A: apache 服务器
=> M: MySQL 数据库
=> P: PHP 开发
安装 服务器 环境
+ 使用一个 papstudy(小皮) 的集成软件
+ 安装:
=> 下载安装包, 双击运行安装
=> 注意: 自己选择一个目录, 全目录不能出现中文和空格
+ 卸载:
=> 打开控制面板
=> 添加删除程序
=> 找到 phpstudy 删除
=> 删除完毕以后, 把相关目录文件删除
+ 软件的使用
=> 打开小皮面板
=> 首页上有四个继承环境的控制器
-> apache
-> FTP
-> MySQL
-> nginx
+ 得到(默认):
=> 文件夹, phpstudy_pro
=> WWW 目录, 是你服务器的根目录
=> 80 端口, 是你 apache 软件的 "编号"
=> index, 是网站首页, 当你在网站根目录下有一个 index 的文件, 你访问服务器的时候会自动打开
+ 根目录的作用:
=> 你的服务器对外开放的目录结构
=> apache 会对外开放一个目录结构
=> 当别人访问你的服务器的时候, 可以看到的内容
=> 修改根目录
-> 打开小皮面板
-> 左侧边栏点击 网站
-> 点击管理 修改
-> 把根目录位置修改(全路径不能有中文)
+ 端口号的作用:
=> 当你使用 ip 地址访问到电脑以后
=> 帮你确定访问哪一个服务器软件
=> 默认是 80, 当你在浏览器内书写 ip 地址的时候, 如果你不写端口号, 浏览器会自动添加 80 端口号
=> 推荐修改
=> 端口号可选的取值范围, 0 ~ 65535, 0 ~ 1024 不推荐使用
-> 打开小皮面板
-> 左侧边栏点击 网站
-> 点击管理 修改
-> 修改端口号位置
+ ip 地址的配套
=> 你可以给你的网站设置第二个域名
-> 打开小皮面板
-> 左侧边栏点击 网站
-> 点击管理 修改
-> 第二域名位置写一个自己喜欢的域名
+ 开放目录权限
=> 任何服务器不对外开放目录结构
=> 可以修改
-> 打开小皮面板
-> 左侧边练点击 网站
-> 点击管理 修改
-> 顶部选项选择 高级设置
-> 找到 目录索引选项 开启
+ 修改默认打开 index 文件
=> 打开小皮面板
=> 左侧边栏点击 网站
=> 点击管理 修改
=> 顶部选项选择 高级设置
=> 把网站首页位置书写为 null
文件的打开方式
+ 本地打开
=> 直接找到你的 html 文件, 双击运行
=> 特点: 在浏览器地址栏, 能看到你的电脑盘符开始的完整路径
+ 服务器打开页面
=> 把你需要看到的页面放在 服务器 的根目录
=> 在浏览器输入你的 http://域名:端口号/指定文件 查看
=> 注意: 你写书的 http://域名:端口号 等价于 你的 服务器根目录
php 代码的书写
+ 后端开发的语言
+ 功能:
=> 接受前端的请求
=> 做出对应的处理
-> 操作电脑系统文件
-> 操作电脑磁盘文件
-> 操作数据库内容
-> ...
=> 返回给前端响应
1. php 代码需要书写在一个 .php 后缀的文件内
2. 在文件中书写 <?php ?> 标签对
-> 在标签对中书写 php 代码
3. 如果你想运行 php 代码, 需要在 apache 服务器上打开
-> 本地打开是不能运行 php 代码的
4. php 代码的每一句都必须书写 分号(;)
-> 最后一句可以不写
// php 的变量
// 定义: $名字 = 值;
// 注意: $ 不是定义变量的关键字, 是变量名的一部分
// 定义了一个叫做 $num 的变量, 值是 100
$num = 100;
// 使用: 直接使用 $名字;
echo $num;
+ 后端的输出和前端的输出不一样
+ 注意: 后端的输出, 只是单纯的输出, 不去决定输出在什么位置
=> 取决于谁在请求他
例子:
=> 后端: 输出 123
=> 当你在 浏览器地址栏 书写该 php 文件的时候, 输出就会输出给浏览器
=> 当你在 ajax 书写该 php 文件的时候, 就会输出在 xhr.responseText 上
=> 当你用 Java 去访问该 php 文件的时候, 就会输出给 Java
=> ...
语法:
1. echo 输出的内容;
2. print_r(输出的内容);
3. var_dump(输出的内容);
区别:
1. echo 只能输出 基本数据类型
=> 不能准确的输出复杂数据类型
=> 注意: 输出布尔 true 的时候, 会转换成 1 输出, 输出布尔 false 的时候, 会转换成 空 输出
2. print_r() 可以输出所有数据类型
=> 注意: 输出布尔 true 的时候, 会转换成 1 输出, 输出布尔 false 的时候, 会转换成 空 输出
3. var_dump()
=> 不光可以输出所有数据类型
=> 并且会带有该数据类型的一些基本信息
+ 在 PHP 内有两种定义字符串的方式
1. 单引号(''): 不能直接解析变量
2. 双引号(""): 可以直接解析变量
字符串拼接
+ 在 PHP 内, 使用 点(.) 进行字符串拼接
+ 条件分支
+ 循环分支
+ 基本和 js 是一致的, 注意变量
+ 在 php 中数组分成两类
1. 索引型数组
=> 定义: $arr = [ 数据1, 数据2, 数据3, ... ]
=> 等价于 JS 内的数组 [ 数据1, 数据2, 数据3, ... ]
2. 关联型数组
=> 定义: $arr = [ key => value, key2 => value2, ... ]
=> 等价于 JS 内的对象 { key: value, key2: value2 }
+ 数组成员的访问
1. 索引型数组
=> 语法: 数组名[索引]
2. 关联型数组
=> 语法: 数组名[key]
+ 因为任何一个语言, 转换成 json 格式是长得一模一样的
+ 语法: json_encode(php 的数据);
+ 专门用来存储数据的仓库
+ 目前市场上的数据库分成两类
1. 关系型数据库 sql 类数据库 二阶段学习
-> MySQL
2. 非关系型数据库 db 类数据库 三阶段学习
-> mongodb
sql 类数据库 MySQl 的基本操作
+ 把整个数据库想象为一个 "磁盘空间"
+ 在整个 "磁盘空间" 中, 会有很多的 库(database)
=> 就相当于一个一个的 "文件夹"
+ 每一个 库 内部有很多的 表(table)
=> 就相当于一个一个的 "表格"
+ 每一个 表 内部由 字段(column) 和 值(value) 组成
=> 字段就相当于表格的表头
=> 值就相当于每一个数据
MySQL 数据库的操作
1. 启动数据库
=> 打开小皮面板
=> 找到 MySQL 点击启动
2. 操作数据库
=> 小皮面板为我们提供了一个可视化工具
=> 打开小皮面板
=> 数据库工具安装
-> win: 安装 sql-front
-> mac: 安装 phpMyAdmin
=> 点击数据库工具, 选择对应的内容
sql-front 的操作
1. 建立 库(database)
=> 光标放在 localhost 位置
=> 鼠标右键
=> 新建
=> 数据库
-> 名称: 全英文
-> 字符集: utf-8
-> 字符集校对: utf8-general-ci
2. 建立 表(table)
=> 光标放在需要建立 表 的 库 上
=> 鼠标右键
=> 新建
=> 表
-> 名称: 全英文
-> 类型: 不要动
-> 备注: 随便写
3. 建立 字段(column)
=> 光标放在需要建立 字段 的 表 上
=> 鼠标右键
=> 新建
=> 字段
-> 名称: 全英文
-> 类型: 表示存储什么类型的数据
+ varchar: 表示字符串
+ int: 表示整数
+ float: 表示浮点数
+ date: 表示时间
+ text: 大文本
4. 填充 值(value)
=> 光标选中需要填充值的 表
=> 点击数据浏览器
=> 手动插入
直接导入 sql 文件
+ 选择你要导入 sql 文件的 库
+ 右键
+ 导入
+ sql 文件
+ 选择你要导入的 sql 文件
+ 注意: 不要双击直接打开, 先修改字符集为 utf-8
FE: 前端 fornt-end
BE: 后端 back-end
UI: 设计师 user-interface
+ 在 PHP 内操作数据库有固定步骤
1. 和数据库建立连接
+ 语法: mysqli_connect(ip地址, 用户名, 密码, 你要操作哪一个库);
=> ip: localhost(127.0.0.1)
=> 用户名: 你的数据库用户名, 默认是 root
=> 密码: 你的数据库密码, 默认是 root
=> database: 你要操作数据库中的哪一个库
+ 返回值: 数据库连接信息
2. 操作数据库
+ 因为是 sql 类的数据库
=> 所有和数据库的相关操作都是使用 sql 语句
=> 在 PHP 内用的语法是一个
+ 例子:
=> 你需要删除数据库中的某一条信息, 使用这个方法, 执行 删除的 sql 语句
=> 你需要修改数据库中的某一条信息, 使用这个方法, 执行 修改的 sql 语句
+ 语法: mysqli_query(连接信息, sql 语句);
=> 连接信息: 就是 mysqli_connect() 的返回值
=> sql 语句: 你要执行的 sql 语句
=> 简单的 sql 语句: "SELECT * FROM `表名`";
3. 解析结果
+ 注意: sql 语句操作, 只有 查询语句 需要解析结果
=> 因为如果是 查询: 返回的是 查询result
=> 如果是 增删改: 返回的就是 true 或者 false
+ 语法: mysqli_fetch_all(查询结果, MYSQLI_ASSOC);
=> 查询结果: mysqli_query() 执行查询的sql语句的返回值
=> MYSQLI_ASSOC: 解析成什么格式的数据
4. 关闭数据库的连接
+ 语法: mysqli_close(连接信息)
+ 注意: 数据库可以不关闭
+ 操作 sql 类数据库的 语句
+ MySQL 也是 sql 类数据库的一种
+ 也是使用 sql 语句来操作
书写规则和规范
1. sql 语句内, 表名 和 字段名 推荐使用 反引号 包裹
2. 推荐关键字用 大写
3. 如果值是一个字符串类型, 那么需要单独再次包裹一个 引号(单引号 双引号 都行)
书写方式1:
=> INSERT INTO `表` VALUES(数据1, 数据2, 数据3, ...);
-> 注意: 需要按照数据库中的字段顺序书写
书写方式2:
=> INSERT INTO `表` (字段1, 字段2) VALUES(值1, 值2);
-> 可以只插入几个数据
+ DELETE FROM `表` WHERE 条件
+ UPDATE `表` SET 字段=值, 字段2=值2 WHERE 条件
+ 普通查询
=> SELECT * FROM `表`
=> * : 表示一条数据中所有字段都要
+ 只获取某些字段
=> SELECT 字段1, 字段2 FROM `表`
+ 条件查询
=> SELECT * FROM `表` WHERE 条件
+ 条件并列查询
=> SELECT * FROM `表` WHERE 条件 AND 条件2
+ 或者条件查询
=> SELECT * FROM `表` WHERE 条件 OR 条件2
+ 排序
=> SELECT * FROM `表` ORDER BY `字段` ASC
=> SELECT * FROM `表` ORDER BY `字段` DESC
+ 分页
=> SELECT * FROM `表` LIMIT 开始索引, 多少个
+ 模糊查询
=> SELECT * FROM `表` WHERE `字段` LIKE '%关键字%'
=> SELECT * FROM `表` WHERE `字段` LIKE '%关键字'
=> SELECT * FROM `表` WHERE `字段` LIKE '关键字%'
=> SELECT * FROM `表` WHERE `字段` LIKE '_关键字_'
=> SELECT * FROM `表` WHERE `字段` LIKE '关键字_'
=> SELECT * FROM `表` WHERE `字段` LIKE '_关键字'