PHP笔记

重点回顾

##1.php标记

 	<?php   

​        	 1.写在这个结构内的代码才会以php语法解析
     	        2.写在这个结构外的代码会原样返回
          ?>

下面提到的内容,如果要书写在html结构中,需要用php代码包裹闭合

字符串的拼接:在JavaScript中字符串的拼接是 + ,但是在PHP中使用 . 进行拼接

isset()判断变量是否存在,判断变量是否定义了,同时它还可以判断变量的值是否为null,
输出结果的细节:在php中如果输出true,那么结果为1,如果输出false,输出结果为null
unset()删除 1.如果删除一个变量,那么变量的值会置为null
2.可以同时删除多个变量
3.如果在函数中删除全局变量,那么并不会真正的将全局变量删除(以后再说)
empty()空 判断变量是否为空值,为空的值有:"" 0 “0”,null,false,array().如果值为以上中的某一个,则返回值

获取字符串长度: strlen():可以获取指定字符串的长度
mb_strlen($str);也可以获取字符串的长度,但是这个有版本问题,只有5.6以上可以正确获取字符串的长度

date(Y-m-d H:i:s) 获取输出的时间
默认情况下这个函数获取的是格林威志时间,如果想获取中国时区的时间,就需要进行配置文件的修改
php-ini >date.timezone = PRC|Asia/shanghai|Asia/chongqin

2输出内容的方式

​ echo:输出多个字符串
print:输出一个字符串值
print_r:可以输出复杂数据类型,如数组,以键值对的形式输出
var_dump:可以输出复杂数据类型,是一个函数,必须加括号,如数组,以键值对的形式输出,还可以输出数据的长度

3.字符串

输出对应的转义符,使用对应的单双号

​ 单引号 ‘’:不能解析变量,会将变量当成普通字符串处理 \ ’
双引号 “”:能解析变量 " \t \n \r $

4.数组:

​ 创建方式:三种方式

  $arr = array()
    $arr = []
    $arr[] = value; //如果数组不存在则可以自动的创建一个数组,并将当前值添加到数组中,
    如果存在则添加数据到数组
数组的类型:
    索引数组:不人为设置key $arr = array(1,2,3,4);
    关联数组:人为设置key和value  $arr = array("name"=>"jack")
    混合数组:$arr= array(1,2,3,"name"=>"jack",4)
    二维数组:数据的值本身又是一个数组
        $arr = array(
            array(
                "name"=>"jack",
                "age"=>20
            ),
            array()
        );
数组遍历:for  | foreach
for($i =0;$i<count(数组);$i++){}
foreach(需要遍历的数组对象 as $key => $value){}

###5.变量作用域:函数内部默认不能使用函数外部所声明的成员,如果想使用,则:

​ 1.使用global关键字

 $num = 100;
    function cal(){
        // 如果想在函数内部使用函数外部声明的全局变量,那么就可以使用关键字:global
        // global就是用来添加对外部成员的引用
        // 注意点:不能在引用的同时对变量赋值,如果想赋值,则需要换下一行赋值
        global $num;
        // 如果在函数内部修改了全局变量的值,那么这个修改也会影响后面的使用
        $num = 10;
        $sum =0;
        for($i =0;$i<=$num;$i++){
            // $sum = $sum + $i;
            $sum += $i;
        }
        return $sum;
    }

2.使用超全局变量$GLOBALS 超全局变量

###6.常量的定义和使用:

​ define(名称,值,false)
js中设置常量:const

###7.载入其它文件:文件包含

​ include:如果载入失败,不会报错,后续代码会继续执行,它可以重复载入
include_once:如果载入失败,不会报错,后续代码会继续执行,它不会重复载入,只会真正的载入一次
require:如果载入失败,会报错,后续代码不会继续执行,它可以重复载入
require_once:如果载入失败,会报错,后续代码不会继续执行,它不可以重复载入

8.常用API

​ 文件操作:
file_get_contents:可以读取文件内容并返回
file_put_contents(文件路径,写入的内容,FILE_APPEND):可以将指定的字符串内容写入到文件,其中第三个参数FILE_APPEND可以实现文件内容的追加

###9.html混编

​ 1.在<?php 在这个结构内部只能写符合php语法的代码 ?>
2.在<?php ?>结构的代码会原样输出
3.混编实现方式
1.<?php echo '

' ?>
2.
<?php if(){ ?>


<php }?>
将字符串分割:explode(“分隔符”,分割的字符串);

get获取和post获取方式

get方式:使用 $_GET 获取用户以get方式传递的参数,他是一个关联数组显示在地址栏 安全性低,存储小,在不同浏览器一般大小为4kb 
	如果想提交表单的数据,则必须为表单元素添加name属性

post方式:使用 $_POST获取用户以post方式传递的参数

  // 判断:用户是否真正的发送的post请求,也就意味着我们得判断当前请求是否是post,如果是则进行处理,否则就跳过
    // print_r($_SERVER);
    if($_SERVER['REQUEST_METHOD'] === 'POST'){}
同样我们也可以使用
				if(!empty($_FILES)){}  判断用户是否有相应的提交
    $_SERVER里面有许多属性
    form表单的action属性是书写需要提交的地址,一般就是本网页,
$_SERVER["PHP_SELF"]是自动获取action需要提交的目标地址
如果是本网页可以不写,methed是书写以什么方式提交给用户数据
  • 单选框 复选框的问题

    他们同样也要必须写name属性,
    复选框:如果想同时选中多个复选框,则可以给复选框的name属性后加中括号[],后台获得是一个数组

  • 文件或者图片上传

<input type='file' name='myfile' >
如果想传入多个文件,需要给input表单添加**multiple**属性,但是此时需要给name值后面添加中括号 [],这样才能保证后台能收到数据而不被后面传入的数据覆盖
在php中上传文件的方式必须是POST
在上传文件的时候必须要在表单里添加enctype属性 --- 他有两个属性值
		application/x-www-form-urlencoded:将参数编码为键值对的格式,这是标准的编码格式(UTF-8 GBK GB2312),它用来处理字符串,它是默认的编码格式
        multipart/form-data:它是专门用来处理特殊数据的,如文件
        我们在form表单中用multipart/form-data
**在php中,file上传的文件都存储在 $_FILES中,**
	Array
     (
        [myfile] => Array
            (
                [name] => 跨域攻击.png:源文件的名称
                [type] => image/png:源文件的类型
                [tmp_name] => C:\Windows\phpE412.tmp:这是文件在服务器的临时路径
                [error] => 0:错误信息,0代表没有错误
                [size] => 256436:文件的大小
             )
     )
```// 1.判断用户是否提交
    if(!empty($_FILES)){
        print_r($_FILES);
        // echo $_FILES["myfile"]["tmp_name"];
        // 判断文件类型是否满足需要
        $type = $_FILES["myfile"]["type"];
        // strpos(源字符串,搜索字符串):可以获取指定字符串在源字符串中第一次出现的索引值,索引从0开始
        // if(strpos($type,"image/") === 0){
        $filename = $_FILES["myfile"]["name"];
        // 获取当前文件的扩展名 strrchr(源字符串,指定搜索的字符)
        $extension = strrchr($filename,".");
        // 生成一个随机的文件名称:获取到一个唯一值
        $myname = time().rand(1000,9999).$extension;
        move_uploaded_file($_FILES["myfile"]["tmp_name"],"./upload/".$myname);  
        // }else{
        //     echo '你选择不是图片';
        // }
    }


其中strrchr($filename,'.')是获取文件的扩展名  原理是从后面找找到 . 为止返回找的内容
 $myname = time().rand(1000,9999).$extension;是为了防止文件名冲突被覆盖解决办法
move_uploaded_file($_FILES["myfile"]["tmp_name"],"./upload/".$myname);  这句代码是把图片文件从临时存储位置放到永久存储位置,防止被服务器清除
if(strpos($type,"image/") === 0){} 这句代码的意思是判断传入的文件是否是图片
		原理是从头往后走,当遇到image并且走完 如果返回值为 0 ,说明image前面没有任何别的字符,此文件就是图片.

为了是用户体验更好 使用户填写了正确的用户名或者密码之后让文本框保持,使用下面的代码更加友好

` 姓名:<input type="text" name="username" value="<?php if(isset($username)) echo $_POST["username"] ?>">``

MYSQL数据库操作

有两种方式可以进行数据库的操作:
一:命令行(了解)操作比较繁琐,需要记忆大量的命令
二:数据库可视化工具 – Navicat for MySQL,可以进行数据库的增删改查操作

  • 数据库查询操作

  • – 查询语句的语法:select * |字段列表 from 表列表 where 条件 查询可以返回一个结果表(表)
    – *代表当前表的所有字段
    – 1.查询mybase中的所有数据 选中某行点击运行旁边的倒三角进行运行
    select * from mybase
    – 2.查询mybase中所有的id和姓名
    select id,name from mybase
    – 3.带条件的查新
    select * from mybase where id =3
    – 4.创建多条件查询 not and or ==> 相当于js中的 ! && ||
    select * from mybase where age<20 and gender =0

数据库增加操作
– 增加数据
– 增加语句的语法:insert [into] 表名[(字段1,字段2,…)] values(值1,值2…)
– 1136 - Column count doesn’t match value count at row 1 如果表名后没有指定字段那么必须设置对应的数量的值
insert into mybase values(5,‘andy’,30,1)
– 如果有标识列,那么标识列一般可以给null值,如果给null,系统会自动生成
insert into mybase values(null,‘andy’,35,0)
– 指定需要添加数据的字段
insert into mybase(name,age,gender) values(‘andy’,25,1)
– 对于可以为null的字段可以不赋值
insert into mybase(name) value(‘bay’)
– 非空字段需要赋值,否则系统也不能自动为其生成默认值 – 建议,非空字段一定要赋值
insert into mybase(age,gender) value(34,1)

数据库修改和删除操作:
– 修改语句的语法:update 表名 set 字段1 = 值1,字段2=值2… where 条件
– 修改时一定要注意条件,很重要
update mybase set age = age +1 – 注意条件
– 多条件修改
update mybase set age =age +10 where id =5 or id=4
update mybase set age = age+5,gender=0 where id=5

– 删除语句的语法:delete [from] 表名 where 条件 同样注意删除条件 因为删除不可逆,除非备份
delete from mybase where id=7
– 多条件删除
delete from mybase where id in(4,5)

常见的数据库函数:
– 常见的数学函数 – 统计
– count(): 可以查询满足条件的记录数,无法对null值进行计算,会无视null值,推荐使用*
select count(*) FROM mybase
– 通过字段查询统计
select count(id) from mybase

– MAX(expr):获取最大值 MIN(expr):获取最小值
select MAX(age) from mybase
select MIN(age) from mybase
– 如果查询的是字符串 它会根据解码进行排序
select MAX(name) from mybase
select MIN(name) from mybase

– avg :获取平均值,他的参数一般来说是数值
select avg(age) FROM mybase
– 如果查询的是字符串,系统会默认转换,但是无法转换会返回0
select AVG(name) FROM mybase

– order by:排序
– select * | 字段列表 from 表列表 where order by 排序字段列表 asc(升序是默认的)desc(降序)
select * from mybase order by id desc
select * from mybase order BY name
select * from mybase order by gender,age

– limit : 获取指定范围的数据
– limit 后只有一个参数的时候:相当于获取指定的前n条记录
select * from mybase limit 3
– 获取后三条数据,和order by 配合使用 但是order by 要放在limit前面,如果放在后面会报错的
select * from mybase order by id desc limit 3

– limit后也可以跟两个参数 limit n(偏移量,从0开始),m(获取的记录数)
SELECT * from mybase limit 2,3 – 从偏移量2开始往下去3条数据
– 另外一种写法
select * from mybase limit 3 offset 2 – offset:偏移量

– 可以通过这个写法进行分页
– 下面是分页制作
int pageSize=10;
int pageCount=1;
SELECT * FROM mybase LIMIT pageSize OFFSET (pageCount-1) * pageSize
SELECT * FROM mybase LIMIT pageSize OFFSET (pageCount-1) * pageSize
SELECT * FROM mybase LIMIT pageSize OFFSET (pageCount-1) * pageSize

数据库多表查询操作
– 查询数据
select * from student
select * from class

– 使用from where 可以实现多表查询
select * from student,class where student.cid = class.classid
select studentID,studentName,age,gender,className FROM student,class WHERE student.cid = class
.classid
SELECT * from student join class on student.cid = class.classid

– left join :他可以获取左表中的所有数据,如果建立关联的字段在右表中没有存在,那么右表中的相应字段的数据默认为null
select * from student left join class ON student.cid = class.classid
– right join :他可以获取右表中的所有数据,如果建立关联的字段在左表中没有存在,那么左表中的相应字段的数据默认为null
select * from student right join class ON student.cid = class.classid

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码上登堂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值