PHP基础(2)


每日一记

文件包含

文件1
function add()
{
    echo '执行';
}
add增加,del删除,update更改,select查询
文件2
include ('文件1.php');          //调用文件
add();                         //调用函数

include与require区别
include在没有这个文件时报错并执行,但是require报错但是不执行
include_once与require_once区别
可以重复调用文件,区别同上

数组

定义
索引数组:
$arr=[1,2,3,4,5];
var_dump($arr);
或
$arr=array(1,2,3,4,5);
var_dump($arr);

关联数组:
$arr=[
    'A'=>'a',
    'B'=>'b';
];
var_dump($arr);

二维(多维)数组:
$arr=[
    'A'=>[
        'a',
        'b',
        'c',
    ]
];
var_dump($arr);
操作

增加:直接声明$arr[位置]=’内容’;
删除:unset($arr[位置]);
修改:重新定义
对于多维数组要var_dump($arr[第一层位置][第二层位置]…….);
获取循环次数:echo count($arr);

遍历
foreach ($arr as $key => $value) {
    echo $key.'<br/>';
}

list($a , $b , $c , $d , $e) = $arr;
echo $a,$b,$c,$d;
一一赋值,多出来的跳过,只对有索引的有效

while (list($key , $val) = each($arr)) {
    echo $key.'--'.$val.'<br/>';
}

排序
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列

数组的合拼
$array1 =array('a','b','c');
$array2 = array('a1'=>'php','a2'=>'python','a3'=>'java');
$array3 = array_merge($array1,$array2);

添加到指定位置
array_splice(数组,位置,删除几个,增加元素)

超全局数组

配合html前端页面method=’get/post’
var_dump($_GET);获取GET的参(显示内容在URL)
var_dump($_POST);获取POST的参(不显示)
var_dump($_REQUEST);都可以获取
前端name所设置的会把参数传到后端
name=’username’
$username=$_GET[‘username’];

错误处理

notice注意                   //后续代码会继续执行
warning警告                  //后续代码会继续执行
fatal error致命错误          //后续代码不会继续执行
@可以消除警报(除了fatal error)
在ini配置文件里display_errors:On可以取消报错(所有)
在ini配置文件里error_log找错误日志

日期函数

时间戳:时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
配置文件可改时区,不详细讲

数据库简介(dos操作)

对数据库的解释:
数据库相当于文件夹,表相当于文件,字段就是内容。
注释符:
#    "--  "    /* */
<不是内部命令就更改环境变量>

【库操作】
连接数据库:
mysql -uroot -p
查库:
show databases;
建库
creat database 库名;
删库
drop database 库名;
退出
mysql > exit;
mysql > quit;
mysql > \q;
重命名数据库
RENAME database olddbname TO newdbname

【表操作】
进库:
use 库名;
建表:
creat table 表名(id int,字段名 数据类型(长度) , 字段名 数据类型(位数));
建表命令:
show creat table 表名;
改表名:
alter table 原表名 rename 新名字
查表:
show tables;
select * from table_name
删表:
drop table 表名;
查表结构:
desc 表名;                      //字段类型,主键,是否为空等属性,但不显示外键

【字段操作】
建表字段:
alter table 表名 add 字段名 (字段类型)
改表字段:
alter table 表名 change 原来的字段名 现在的字段名 数据类型(位数);
改表字段值:
alter table 表名 modify 字段名 修改后的值
删表字段:
alter table 表名 drop 字段名
更改表的存储引擎:
alter table 表名 engine=存储引擎名;
给所有字段增加数据:
insert into users (字段名1,字段名2,字段名3)values(值1,值2,值3);

【插入顺序】
first
    alter table 表名 add 字段(字段类型) first
after
    alter table 表名 add 字段名(字段类型) after (在谁后面)

【其它命令】
显示系统特定资源的信息
show status;                   //例如,正在运行的线程数量。

mysql数据类型

整形:
int4字节,bigint8字节
浮点型:
float(m,d)
double(m,d)
decimal(m,d)
字符型:
char定长字符串(常用于32位md5密码)
varchar变长字符串(常用于用户名)
时间型:
4字节,年月日格式
auto_increment:
自动增加,只用于整形,priimary key设置起始值(默认为1)
总结内容

以上内容皆可使用phpMyAdmin和NavicatPremium更改

索引

普通索引:
alter table 表名 add index(字段);
唯一索引:
alter table 表名 add unique(字段);
主键索引:
alter table 表名 add primary key(字段);
全文索引:
alter table 表名 add fulltext(字段);
显示索引:
show index from 字段名

使用及区别

查询数据

select选择时如果要限制条件就在后面加上where和条件
where age<>50; == where age!50                     //取非
age in(18,16,17);                                  //固定查询的值
address like 'Ax';                                 //模糊查询A开头的
address like 'xAx';                                //模糊查询含A的
select * from 表名 order by 列名 desc;             //降序显示,默认为升序(asc)
select * from 表名 limit 5,5;                      //从第五个值开始往下取5个值
select * from 表名 group by 列名;                  //分组(只保留一个,去重)
select count(*) from 表名;                         //显示该列有几个数据
select 列名 as 别名 from 表名;                     //给该列起别名

注意:
and优先级高于or,因此先计算and表达式再运算or表达式

聚合查询:
count()返回行数
sum()返回某列值的和
avg()返回某列平均值
max()返回某列最大值
min()返回某列最小值

分组查询:
select * from 表名 group by 字段名;
select * from 表名 limit 开始行数,结束行数;
select * from 表名 as 重命名;

mysql子查询:
类似于嵌套循环,将内层的结果传递到外层进行下一步操作
大致有:where,from,exists三个

联合查询(两个表的查询):
原理——————取得两个结果集的并集
union默认选取不同的值。如果允许重复的值,请使用union all(不会去掉结果中的重复行)
union all 查询全部而且不会消除重复的行

查询数据库

内联查询:
select 列名1 from 表名1 inner join 表名2 on 条件;
左连接查询(以左边为基准):
select 列名1 from 表名1 left join 表名2 on 条件;
右链接查询(左边没有的不会显示):
select 列名1 from 表名1 right join 表名2 on 条件;
嵌套查询:
不建议,太慢

每日一句

双十一被学校关在宿舍饲养,不用走到哪都吃狗粮真是太开心了(dog)

评论
  目录