php和mysql入门

Posted 贪吃ღ大魔王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php和mysql入门相关的知识,希望对你有一定的参考价值。


服务器[了解]

<前言:通俗的讲,能够提供某种服务的机器(计算机)称为服务器


在这里插入图片描述

服务器软件

使计算机具备提供某种服务能力的应用软件,称为服务器软件,
通过安装相应的服务软件,然后进行配置后就可以使计算具备了提供某种服务的能力。

常见服务器分类: 文件服务器、数据库服务器、邮件服务器、Web服务器等

其中与我们息息相关的是 web服务器, 想让计算机成为 web 服务器, 就要安装服务器软件, 提供 web 服务

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

常见的提供web服务的服务器软件

  • (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是一门弱类型语法,变量的类型可以随意改变。
变量其实就是存储数据的容器

变量的命名规则

//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中一般是将关联数组进行转化,前端才能收到进行处理

Mysql数据库技术

数据库基本概念[了解]

专门用来存储、管理数据的仓库(空间),按照数据结构来组织、存储和管理,可以实现高效存取数据。英文:Database, DB。

关系型数据库[了解]

当前使用范围最广的数据库。基于表, 按照关系模型(数据之间表与表存在联系)组织的数据库。

订单:订单编号,商品名称,价格,数量,配送地址

订单编号商品名称价格数量配送地址
100123华为mate1049992北京市京顺路99号
100124花裙子4991北京市清华大学1号楼

用户信息表

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

商品信息表

商品名称 价格 品牌 属性

订单表

用户id 商品id 地址id

  • 关系型数据库: 基于表, 表与表之间可以存在关系进行多表查询的存储方式, 适合较为复杂的存储 mysql, SQL Server, oracle.
  • 非关系型 数据库: 基于键值对的存储方式, 数据之间没有耦合性, 特点执行效率高 mongodb redis(内存型数据库)

数据库的组织架构:

数据库

  • 数据表(table)

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

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

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

  • 记录-行(row,record)

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

    懒男鞋垫螺蛳粉 99 10 是

    没有饼的老婆饼 400 20 否

  • 字段-列 (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;  
创建数据库
 create database [if not exists]`数据库名` charset=字符编码
删除数据库

drop database [if exists] 数据库名

数据表的操作

基本实例

表创建以及字段
create table [if not exists] 表名(
    字段名 数据类型 [null|not null][auto_increment] [primary key][comment],
    字段名 数据类型 [default])engine=存储引擎 default charset=utf8;
字段类型
  • 整型 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. primary key auto_increment 自动增长

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

类型必须为整型。

2 unique key 不能重复

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

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

创建数据表

sql语句创建
mysql> create table if not exists teacher(
    -> id int auto_increment primary key comment '主键',
    -> name varchar(20) not null comment '姓名',
    -> phone varchar(20) comment '电话号码',
    -> addr varchar(100) default '地址不详' comment '地址'
    -> )engine=innodb;
图形界面创建

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

新建表

在这里插入图片描述
保存表结构:

在这里插入图片描述
运行sql语句的方法

在这里插入图片描述

SQL

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

在这里插入图片描述

增删改查

插入数据 insert

插入数据
-- insert into 表名 (字段列表) values (值列表)
insert into book(name,author,category,price) values ('天龙八部','金庸','文学',20)
一次性插入多条数据
insert into book values (null,'天龙八部','金庸','文学',20),(null,'笑傲江湖','金庸','文学',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
删除id小于3的数据
delete from book where id<=4
删除所有数据
delete from stu;
初始化数据表
truncate table stu;
查询数据select

数据表的准备

create table stu(
    stuno char(6) not null primary key,
    name varchar(20) not null,
    sex char(3) not null,
    age tinyint not null,
    address varchar(20) not null,
    seat int,
    math int,
    chinese int 
) default charset=utf8;

插入数据
insert into stu values('sh1002','张辉','男',30,'山东省',2,95,79),			('sh1003','徐莫','男',23,'浙江省',1,65,89),			('sh1004','张白芷','男',24,'安徽省',3,89,91),			('sh1006','陈浩南','男',22,'江西省',6,85,null),		('sh1005','潘金莲','女',16,'浙江省',5,null,65),			('sh1001','刘德华','女',61,'安徽省',4,85,79);

1 基本查询

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

2 查询年龄小于20岁的女生

 and表示两边的条件都满足,并且成立
-- select * from 表名 where 条件
select * from book where age=20 and age<20

3 找出安徽省和浙江省的学生

or 满足一侧即可
select * from stu where address='安徽省'  or address='浙江省'

4 找出地址是安徽省和浙江省的学员(in)

in() 在范围之内  not int()  不在范围之内
select * from stu where address in('安徽省','浙江省')

5 查找出名字以张开头的学员(like) 模糊查询

它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的
select * from stu where name like "张%"

6 按照年龄进行从大到小的排( order by)

desc 降序,从大向小的排        asc 升序,从小往大的排
select * from stu order by age desc

7 只获取年龄最大的学生信息

用于指定获取的条数,   用法:  limit 开始的下标,个数;
select * from stu order by age desc limit 0,1

8 找出stu表中年龄最大的3个人

select * from stu order by age desc limit 0,3

9 获取数据库总共有多少信息

count()  获取返回数据的总条数
select count(*) from stu

10 联合查询

select * from table1 left join table2 on table1.字段=table2.字段 

注意点:

排序 order by 条数限制 limit 总条数 count() 实现排序功能

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 “数据库连接成功
    ”;

    // 2. 准备 sql 语句: 删除一条数据
    $sql = “delete from book where id = 3”;

    // 3. 让数据库执行 sql 语句, 并分析结果
    // mysqli_query(数据库连接对象, 要执行的sql语句)
    // 执行成功返回 true, 执行失败返回 false
    if ( mysqli_query( $link, KaTeX parse error: Expected '}', got 'EOF' at end of input: …o mysqli_error(link);
    }

    // 4. 关闭数据库连接 (挂电话)
    mysqli_close( $link );

非查询(增删改)和查询语句(select)的区别

通过mysqli_query()函数,来执行sql语句,操作数据库