day20(php和mysql)


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华为mate1049992北京市京顺路99号
100124花裙子4991北京市清华大学1号楼

用户信息表

保存:用户名,手机号,用户id,身份证号

商品信息表

商品名称 价格 品牌 属性

  • 关系型数据库: 基于表, 表与表之间可以存在关系进行多表查询的存储方式, 适合较为复杂的存储 mysql, SQL Server, oracle.

  • 非关系型 数据库: 基于键值对的存储方式, 数据之间没有耦合性, 特点执行效率高 mongodb redis(内存型数据库)

数据库的组织架构:

数据库
  • 数据表(table)

    表是以行和列的形式组织起来的数据的集合。项目一般需要不同的数据表,将数据分布存储在不同的数据表中。

    数据库的数据存放在数据表中

    如:订单表,用户表,商品表,配送地址表

  • 记录-行(row,record)

    我们把表中的每一行叫做一条“记录”

  • 字段-列 (column,field)

    字段是比记录更小的单位,多个字段集合组成记录, 即数据项

关系型数据库—MySQL

数据库官网地址:https://dev.mysql.com

英文手册地址:https://dev.mysql.com/doc/refman/5.5/en/

中文参考论坛: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(时分秒)。年月日时分秒。

字段约束

字段约束: 字段数据的属性规则(特征)

  1. not null 不为空

    可以限制字段值不能为空

  2. default 默认值,

    可以设置字段的默认值,在没有录入时自动使用默认值填充。

  3. primary key 主键 :唯一标识,不能重复,不能为空

设置字段为主键,主键字段的值不能重复,不能为空。而且一个数据表中只能设置一个字段为主键,作为每行记录的唯一身份信息(索引)。stu_id int primary key

  1. auto_increment 自动增长

设置字段为自动增长,默认从1开始自动分配编号。自增长字段必须为一个key(索引,数据结构,便于快速查找数据,相当于书的目录),一般与primary key结合使用。

类型必须为整型。

  1. unique key 不能重复

    唯一键,设置字段的值为唯一的,可以设置多个字段为唯一键。唯一键字段的值可以为空。

    学号设置为主键,要求唯一的,不能为空的,用来标识学生信息,

创建数据表

注意 创建表时,每个表必须有一个主键

新建表

保存表结构:

运行sql语句的方法

SQL

SQL编写注意点: 注释用 – , 语句结束加分号(😉

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z7RrkIyP-1640781696941)(/1570517796773.png)]

增删改查

  1. 插入数据 insert
-- insert into 表名 (字段列表) values (值列表)
insert into book(name,author,category,price) values ('天龙八部','金庸','文学',20)
  1. 修改数据update

    如果没有where条件就会修改表中所有数据

-- update 表名 set 字段名称1=值1,字段名称2=值2,... where 条件
update book set name='倚天屠龙记',price=22 where id=4;
  1. 删除数据delete
-- delete from 表名 where 条件
delete from book where id=4
  1. 查询数据select
  2. and表示两边的条件都满足,并且成立
-- select * from 表名 where 条件
select * from book where author='金庸' and price>20*
  • 获取所有的字段

想获取指定字段 select name,price from book

PHP操作数据库

连接数据库基本步骤

  1. 连接数据库
  2. 准备sql语句
  3. 执行sql语句
  4. 获取执行的结果并分析
  5. 关闭数据库

操作数据库常用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())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿駷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值