typora-copy-images-to: img
typora-root-url: img
服务器[了解]
前言:通俗的讲,能够提供某种服务的机器(计算机)称为服务器
服务器软件
使计算机具备提供某种服务能力的应用软件,称为服务器软件,
通过安装相应的服务软件,然后进行配置后就可以使计算具备了提供某种服务的能力。
常见服务器分类: 文件服务器、数据库服务器、邮件服务器、Web服务器等
;
其中与我们息息相关的是 web服务器, 想让计算机成为 web 服务器, 就要安装服务器软件, 提供 web 服务
常见的提供web服务的服务器软件1
-
(1) IIS windows web 服务器软件
-
(2) apache web 服务器软件 ( 开源免费的 )
-
(3) Tomact
-
(4) Nginx(重点)
HTTP服务器(web服务器)
即( web服务器 )网站服务器,主要提供文档(文本、图片、视频、音频)web浏览服务,一般安装Apache、Nginx服务器软件。
服务器与客户端的关系
搭建HTTP服务器
phpStudy介绍
phpStudy是一个PHP调试环境的程序集成包。
该程序包集成最新的Apache+PHP+MySQL,安装非常的简单
phpStudy的安装
安装phpStudy,解压双击安装(非中文路径),其它默认安装。
推荐就安装在默认的目录下,一定不能有中文,否则肯定启动不起来。
phpStudy的错误解决
如果phpStudy启动发生错误,参数下列几点。
-
一是防火墙拦截,
-
二是80端口已经被别的程序占用,如IIS,迅雷等;
-
三是没有安装VC9运行库,php和apache都是VC9编译。
解决以上三个问题,99%能一次性安装成功
为了减少出错安装路径不得有汉字,如有防火墙开启,会提示是否信任httpd、mysqld运行,请选择全部允许。
提示缺少vc9 库文件
在提供的资料库中找到phpStudy运行库, 根据自己电脑操作系统的位数安装对应的vc9运行库即可。
初次安装之后的访问
在浏览器中输出入localhost 是本地的意思,相当于 127.0.0.1
本地hosts
Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
hosts文件的地址:C:\Windows\System32\drivers\etc
PHP基础
PHP简介
-
开源(open source)软件,跨平台,常用操作系统稳定执行。Windows / Linux。做WEB开发的经典组合 WAMP,LAMP,LNMP基本都是开源软件。
-
入门简单,用户只需要关注应用,开发成本低。
-
支持的大多数主流数据库。MySQL,oracle,Redis等
文件以.php后缀结尾,所有程序包含在
<?php 这里是代码 ?>
避免使用中文目录和中文文件名php页面无法直接打开需要运行在服务器环境当中
PHP文件位置
D:\phpStudy\PHPTutorial\WWW,只要写在这里才能被解析
php初体验
<?php
echo "hello world";
?>
输入中文乱码问题:如果使用echo输出中文,会乱码。
在php的语法中,末尾必须加分号,不然就报错了(最后一行可以不加分号)
<?php
//content-Type:text/html;返回内容是一个HTML文档文本
//charset=utf-8 设置编码集
header("content-Type:text/html;charset=utf-8");
echo "hello world";
echo "<br/>";
echo "你是哪里人?";
?>
//思考:浏览器访问php文件时,过程是怎么样的?
变量
php是一门弱类型语法,变量的类型可以随意改变。
变量其实就是存储数据的容器
变量的命名规则
//1. 不需要关键字进行声明,变量在第一次赋值的时候被创建。
//2. 必须以$符号开始
//3. $后面的命名规则与js的变量命名规则一致。
$name = "峰峰";
echo $name;
数据类型
简单数据类型
字符串
$str = "峰峰";
echo $str;
整数
$num = 100;
echo $num;
浮点型
$float = 11.11;
echo $float;
布尔类型
$flag = true;
//当布尔类型值为true时,输出1
echo $flag;
$flag = false;
//当布尔类型为false时,输出空字符串
echo $flag;
字符串连接符
//1. 在php中,+号只有算数的功能,并不能拼串
//2. 在php中,拼串使用.
$name = "峰峰";
echo "大家好,我是" . $name . ",今年18岁";
php中的单引号与双引号
//1. 字符串的定义可以使用单引号,也可以使用双引号
$name = "峰峰";
$desc = '很帅';
//2. 双引号可以解析变量
//3. 单引号的性能会高于双引号(了解)
$str = '$name 很帅';//$name 很帅
echo $str;
$str = "$name 很帅";//峰峰 很帅
echo $str;
数组
在php中,数组分为两种,索引数组和关联数组
计算数组长度的方法: count(数组名);
索引数组(类似与JS中的数组)
$arr = array("张飞","赵云","马超");
echo $arr;//echo只能打印基本数据类型
echo $arr[0];//张飞
关联数组(类似与JS中的对象)
//属性名必须用引号引起来
$arr = array("name"=>"zhangsan", "age"=>18);
echo $arr["name"];
输出语句
//1. echo 输出简单数据类型
//2. print_r 输出数据结构,一般用于输出复杂类型。
print_r($arr);//print_r是一个函数,不要忘记小括号
//3. var_dump 输出完整的数据结构,包括类型,一般用于精准调试
var_dump($arr);
二维数组
数组中的每个元素又是一个数组
二维数组的存取元素,需要两次访问,依次确定行和列$arr[x][y]
;
//索引数组
$arr=[
[1,2,3],
[4,5,6],
[7,8,9]
];
//取值
echo $arr[2][2];
//存储一个人信息
$info=[
"name"=>"zs",
"age"=>100
];
//存储一个班信息
$infos=[
[
"name"=>"zs",
"age"=>100
],
[
"name"=>"ls",
"age"=>100
],
[
"name"=>"ww",
"age"=>100
]
];
//取值
echo $infos[1]["name"];
语句
判断语句
基本上来说,所有语言的if…else语法都是一样
$age = 17;
if ($age >= 18) {
echo "终于可以看电影了,嘿嘿嘿";
} else {
echo "哎,还是回家学习吧";
}
循环语句
遍历索引数组
$arr = array("张三", "李四", "王五", "赵六", "田七", "王八");
//获取数组的长度: count($arr)
for($i = 0; $i < count($arr); $i++) {
echo $arr[$i];
echo "<br>";
}
遍历关联数组
//遍历关联数组
$arr = array(
"name"=>"zs",
"age"=>18,
"sex"=>20
);
foreach($arr as $key => $value) {
echo $key . "=" . $value . "<br>";
}
函数
<?php
header("content-Type:text/html;charset=utf-8");
//php中函数的语法与js中函数的语法基本一样,不同点在于
//1. 函数名大小写不敏感
//2. 函数的参数可以设置默认值
function sayHello ($name="周杰
伦") {
echo "大家好,我是$name";
echo "<br>";
}
sayHello();//不传参数,会使用默认值
sayHello("峰峰");//传参数,默认值不生效
?>
json的处理
json_encode();把数组转化为json对象
json_decode();把json转化为数组
注意:php中一般是将关联数组进行转化,前端才能收到进行处理
练习与应用
1 可以搭建phpstudy
2能够编写PHP代码
Mysql数据库技术
初识数据库概念
数据库基本概念[了解]
专门用来存储、管理数据的仓库(空间),按照数据结构来组织、存储和管理,可以实现高效存取数据。英文:Database, DB。
关系型数据库[了解]
当前使用范围最广的数据库。基于表, 按照关系模型(数据之间表与表存在联系)组织的数据库。
订单:订单编号,商品名称,价格,数量,配送地址
订单编号 | 商品名称 | 价格 | 数量 | 配送地址 |
---|---|---|---|---|
100123 | 华为mate10 | 4999 | 2 | 北京市京顺路99号 |
100124 | 花裙子 | 499 | 1 | 北京市清华大学1号楼 |
用户信息表
保存:用户名,手机号,用户id,身份证号
商品信息表
商品名称 价格 品牌 属性
-
关系型数据库: 基于表, 表与表之间可以存在关系进行多表查询的存储方式, 适合较为复杂的存储 mysql, SQL Server, oracle.
-
非关系型 数据库: 基于键值对的存储方式, 数据之间没有耦合性, 特点执行效率高 mongodb redis(内存型数据库)
数据库的组织架构:
数据库
-
数据表(table)
表是以行和列的形式组织起来的数据的集合。项目一般需要不同的数据表,将数据分布存储在不同的数据表中。
数据库的数据存放在数据表中
如:订单表,用户表,商品表,配送地址表
-
记录-行(row,record)
我们把表中的每一行叫做一条“记录”
-
字段-列 (column,field)
字段是比记录更小的单位,多个字段集合组成记录, 即数据项
关系型数据库—MySQL
数据库官网地址:https://dev.mysql.com
中文参考论坛:http://www.mysqlpub.com/
SQL-操作数据库的语言
SQL:structured Query Language 结构化查询语言。
SQL语句,相当于客户端发送的命令(与数据库服务器进行交互), 我们后面就是要学习 SQL 语句操作数据库
-
主要是执行 数据操作的基本逻辑有:增删改查 操作
-
能够操作mysql sqlserver oricale
数据库操作方式
-
命令行演示(了解)
cmd中mysq的登录
mysql -uroot -p 密码
- show databases;显示所有的数据库
- use database; 选中某一个数据库
- show tables; 展示数据库下面的表
-
图形界面客户端
数据库连接成功
数据库表的操作
数据库的数据类型
字段类型初步介绍(了解)
-
整型 int
存储如年龄,产品数量,订单编号等。
-
小数类型
float ,decimal eg. 重量,工资,奖金,价格等
使用decimal类型,实现小数的精确存储,一般用来存储与钱有关的数字。3.333333331
-
字符串型
varchar(M) M为该字段可以存储的最多字符数,如varchar(10)。
varchar一般用来存储长度变化比较大的字符串,如文章标题,商品名称,
char(M) 存储长度比较固定的字符串,如手机号,身份证号,序列号,邮编。
此外可以使用text类型,存储较长的字符串,无需指定字符串的具体长度。 char(10)
-
日期时间型
datetime,date(年月日),time(时分秒)。年月日时分秒。
字段约束
字段约束: 字段数据的属性规则(特征)
-
not null 不为空
可以限制字段值不能为空
-
default 默认值,
可以设置字段的默认值,在没有录入时自动使用默认值填充。
-
primary key 主键 :唯一标识,不能重复,不能为空
设置字段为主键,主键字段的值不能重复,不能为空。而且一个数据表中只能设置一个字段为主键,作为每行记录的唯一身份信息(索引)。stu_id int primary key
- auto_increment 自动增长
设置字段为自动增长,默认从1开始自动分配编号。自增长字段必须为一个key(索引,数据结构,便于快速查找数据,相当于书的目录),一般与primary key结合使用。
类型必须为整型。
-
unique key 不能重复
唯一键,设置字段的值为唯一的,可以设置多个字段为唯一键。唯一键字段的值可以为空。
学号设置为主键,要求唯一的,不能为空的,用来标识学生信息,
创建数据表
注意 创建表时,每个表必须有一个主键
新建表
保存表结构:
运行sql语句的方法
SQL
SQL编写注意点: 注释用 – , 语句结束加分号(😉
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z7RrkIyP-1640781696941)(/1570517796773.png)]
增删改查
- 插入数据 insert
-- insert into 表名 (字段列表) values (值列表)
insert into book(name,author,category,price) values ('天龙八部','金庸','文学',20)
-
修改数据update
如果没有where条件就会修改表中所有数据
-- update 表名 set 字段名称1=值1,字段名称2=值2,... where 条件
update book set name='倚天屠龙记',price=22 where id=4;
- 删除数据delete
-- delete from 表名 where 条件
delete from book where id=4
- 查询数据select
- and表示两边的条件都满足,并且成立
-- select * from 表名 where 条件
select * from book where author='金庸' and price>20*
- 获取所有的字段
想获取指定字段 select name,price from book
PHP操作数据库
连接数据库基本步骤
- 连接数据库
- 准备sql语句
- 执行sql语句
- 获取执行的结果并分析
- 关闭数据库
操作数据库常用API
-
mysqli_connect(IP, 用户名,密码,数据库名)
连接数据库 -
mysqli_query($link, $sql)
执行SQL语句 -
mysqli_error($link);
返回错误描述 -
mysqli_close($link);
关闭连接 -
mysqli_fetch_assoc($res);
从结果集中取得一行作为关联数组返回 -
mysqli_num_rows($res);
返回结果集的行数
sql操作注意事项:
- 使用PHP发送SQL语句前,可以先打印SQL语句,检查语句的正确性。
- 使用变量拼接SQL语句时,字段为字符串类型,需要在变量的两侧使用单、双引号包裹。可以将所有的字段外面都使用双引号包含。
// 1. 连接数据库
// mysqli_connect(ip地址, 用户名, 密码, 数据库的名称, 端口号);
// 执行结果
// 1. 连接成功, 返回一个数据库连接对象
// 2. 连接失败, 返回 false
// @表示错误抑制符, 可以抑制错误的输出
$link = @mysqli_connect('127.0.0.1', 'root', 'root', 'test', 3306);
// var_dump($link);
// 如果数据库连接失败
if ( !$link ) {
// 程序结束, die 方法, 结束当前程序, 输出一段语句
die("数据库连接失败");
}
echo "数据库连接成功<br>";
// 2. 准备 sql 语句: 删除一条数据
$sql = "delete from book where id = 3";
// 3. 让数据库执行 sql 语句, 并分析结果
// mysqli_query(数据库连接对象, 要执行的sql语句)
// 执行成功返回 true, 执行失败返回 false
if ( mysqli_query( $link, $sql ) ) {
echo "删除成功";
}
else {
echo "删除失败<br>";
// mysqli_error 可以查看错误消息
echo mysqli_error($link);
}
// 4. 关闭数据库连接 (挂电话)
mysqli_close( $link );
非查询(增删改)和查询语句(select)的区别
通过mysqli_query()函数,来执行sql语句,操作数据库
-
执行的是非查询sql语句时,mysqli_query()执行成功返回true,失败返回false
-
而执行查询的sql语句时,mysqli_query()执行成功,返回查询数据的结果集,失败返回false
查询数据逻辑如下// 操作步骤: // 1. 连接数据库 // 2. 准备 sql 语句 // 3. 让数据库执行 sql 语句 // 4. 分析执行结果 // 5. 关闭数据库连接 // 1. 连接 $link = @ mysqli_connect('127.0.0.1', 'root', 'root', 'test02', 3306); if ( !$link ) { // 连接失败 die('数据库连接失败'); } // 2. 准备 sql 语句 $sql = 'select * from stu where id;'; // 3. 执行 sql 语句, 分析结果 // mysqli_query // (1) 执行非查询语句, 成功 true, 失败 false // (2) 执行查询语句, 成功返回结果集, 失败 false $res = mysqli_query( $link, $sql ); if ( !$res ) { echo mysqli_error( $link ); die('数据库查询失败'); } // mysqli_fetch_all 查询成功, 从结果集中取数据, 以关联数组的形式返回 $arr = mysqli_fetch_all($res); echo '<pre>'; print_r($arr); echo '</pre>';
扩展: 面向对象
什么是对象?
世间万物皆对象:我、你、张三、苹果、电脑等。
对象是指具备某种功能属性的实体,一切可见之物都是对象。一切不可见之物(抽象事物)也是对象。
类的对象称为类的一个实例,例如:明星这个类,然后才有刘亦菲,赵薇这些明星,在编程当中是先有类,然后才有对象的。
类的三大特征
1) 封装
找到变化并且把它封装起来,你就可以在不影响其它部分的情况下修改或扩展被封装的变化部分,这是所有设计模式的基础,就是封装变化,因此封装的作用,就解决了程序的可扩展性。
2) 继承
子类继承父类,可以继承父类的方法及属性,实现了多态以及代码的重用,因此也解决了系统的重用性和扩展性。但是继承破坏了封装,因为他是对子类开放的,修改父类会导致所有子类的改变,因此继承一定程度上又破坏了系统的可扩展性,所以继承需要慎用。
3) 多态
接口的多种不同的时下方式即为多态。接口是对行为的类与对象的区别与联系
类与对象的区别与联系
1) 类是抽象的,概念的,代表一类事物,比如人类,猫类…;
2) 对象是具体的,实际的,代表一个具体事物;
3) 类是对象的模板,对象是类的一个个体实例。
类的声明
在php以及其他高级语言中,都有类的概念,表示一类对象,跟js中构造函数类似。
/*
* class Animal 文件名与类名一致
*/
class Animal
{
public $name; // 类中的变量称为属性(成员变量)
public $length;
/*
* 类中的函数称为方法
* 函数需要返回值,return 后面代码不会再执行
*/
public function eat()
{
return '心之官则思,思则得之,不思则不得也';
}
public function run()
{
echo '心常用则活,不用则窒';
}
}
类的实例化
通过类这个模板来创建一个对象。
-通过明星这个类创建一个刘亦菲或者范冰冰、李冰冰
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kavIT4RG-1640781696941)(/1590647801587.png)]
创建对象
1) 基本语法
$对象名 = new 类名();
$对象名 = new 类名;
2) 对象-如何访问(使用)对象的属性?****
$对象名->属性名;
-> 称为 对象运算符
3) 举例1:实例化上面的类
$elephant = new Animal();
var_dump($elephant->eat());
echo '<br>';
var_dump($elephant->run())