PHP是嵌入式编程语言,嵌入到HTML中,可以是任何位置。

介绍 说明
语法 短标签(需要开启short_open_tag=on)
注释 # 单行注释 // 单行注释 /**/ 多行注释
变量定义 $a 不能以数字开头
换行 echo ““;
输入 $a = fgets(STDIN);
输出 echo $a; printf($a); die($a); 执行完退出 exit($a); 执行完退出
php数据类型 整型 浮点型 字符串 bool型 null型 数组 对象 $a = new PDO(‘mysql://127.0.0.1’);
字符串连接 . 字符串、整型、浮点型等 .= 用于字符串追加
单双引号 “” 解析特殊字符(如变量) ‘’ 不解析特殊字符 或者斜杠转义
比较 == 值比较 === 类型比较
逻辑运算符 and && 与运算,双true为true
or || 或运算,单true则true
xor 异或,有且仅有一个true为true
! 非,不为true则true
三元运算符 condition?value of true:value of false
条件判断 if(){ }elseif(){ }else{ }

循环

函数 说明
while while循环
for for循环
foreach($a as $i) 用i在a中遍历

数组

说明 函数
索引数组 $a=array(1,’二’,3,4); $a[1];
关联数组 $a=[ ‘uname’=>’zs’, ‘age’=>18 ]; echo $a[‘age’];
混合数组 $a=[ ‘hello’, ‘age’=>18, 123, ‘pass’=>’123456’, 456 ]; a[1]=123 a[‘age’]=18
注意,指向不占下标顺序

数组增删

说明 函数
追加 $a[‘w’]=’q’ 赋值追加 array_push($a,’a’)
删除 array_pop($a); 删除数组最后一个元素

数组排序

函数 说明
sort() 升序排序
rsort() 降序排序
ksort() 根据键升序排序
krsort() 根据键降序排序
asort() 根据值,升序排序
arsort() 根据值,降序排序

注:排序操作会改变原来数组

遍历输出

for($i=0;$i<sizeof($a);$i++){

echo $a[$i];

}

foreach ($a as $key=>$value)

函数

函数 说明
var_dump() 输出详细信息
strlen() 判断字符串长度
trim() 去除两侧空字符串,清理数据
intval() 把字符串转为整型
count()、sizeof() 返回数组长度
empty() 检查变量是否为空
gettype() 获取变量类型
is_array() 检查变量是否为数组类型
isset() 检查变量是否被设置或赋值
unset() 释放变量
substr() 截取字符串,起点-长度
strstr() 截取字符串,起点-结尾
md5() 计算字符串MD5值
time() 获取当前时间(元年计数法,秒)
date(“Y-m-d H:i:s”,time()) 将时间戳转化为日期格式
feof() 检查文件是否读取至文件末,常用于判断文件是否读取完毕
explode() 分割字符串 explode(‘::’,$line)
str_ireplace() 替换字符串,不区分大小写
str_ireplace($search, $replace, $str);
在str中将replace替换为search

文件操作

函数 说明
fread() 读取整个文件或指定长度的字符串,可用于二进制文件读取
fgets() 读取文件中的一行
fgetss() 读取文件中的一行,并去掉所有HTML、PHP标记
fgetc() 读取文件中的一个字节
file() 将文件读取到数组
file_get_contents() 无需打开文件及关闭文件,读取文件全部内容到字符串,文件不存在则自动创建
file_put_contents() 将字符串内容写入文件,文件不存在则自动创建
copy() 复制文件
unlink() 删除文件
rename() 重命名文件或目录,或移动文件
ftruncate() 将文件截断到指定长度
file_exits() 判断文件或文件夹是否存在
filesize() 只读,返回文件大小
filetype() 只读,返回文件类型,如文件或文件夹
filectime() 返回文件创建时间的时间戳
filemtime() 只读,返回文件的修改时间
realpath() 返回文件的物理路径
pathinfo() 以数组形式返回文件的路径和文件名信息

类和对象

类:同样特征和行为的对象的集合

类中变量=>属性

类中函数=>方法

对象=>类的实例化

说明 函数
类的声明 class Person{
var 属性1;
var 属性2;
function name1(){ //方法1 }
function name2(){ //方法2 } }
类的使用 $a=new Person;
实例化对象

$a->name=’小马’;
对象属性赋值

$a->say();
对象方法调用

文件处理

$a = fopen(‘1.txt’,’a’) 以a方式打开文件

fclose($a) 关闭文件

打开文件方式

参数 说明
r 只读打开,文件不存在则出错
w 写入方式打开,游标指向文件头,文件不存在则创建
a 以追加方式打开,游标指向文件末,文件不存在则创建
b 以二进制方式打开文件,可与r、w、a合用
r+ 读写方式打开,游标指向文件头
w+ 读写方式打开,游标指向文件头,并删除文件内容
a+ 以追加方式打开,游标指向文件末
x 以只写方式创建并打开,游标指向文件头。文件存在则打开失败
x+ 以读写方式创建并打开,游标指向文件头。文件存在则打开失败

文件读取、写入

函数 说明
fgets() 读取一行
file_get_contents() 读取全部
fwrite() 将一个字符串写入文件 ‘)?>

表单处理

超全局变量,只有在web模式下才可以使用

函数 说明
$_REQUEST GET、POST集合,但是速度慢
$_GET 接收GET方式提交的数据,数据量小,url可见
?传参,多个参数使用&连接 a标签(链接)也可以使用GET方式传参
$_POST 接收POST方式提交的数据,数据量不限 需要表单提交
$_FILES 接收文件提交(暂存至临时目录)
移动临时文件文件至指定目录
$file=$FILES[‘file’];
if($file[‘error’]==0){
move_uploaded_file($file[‘tmp_name’],’uploadfile/‘.$file[‘name’]); }
可用echo $FILES查看FILES属性,包括临时目录位置
$_COOKIE 接收cookie值 setcookie()创建cookie
$_SESSION 接收SESSION值 session_star()开启session session_id()获取session
$_SERVER 获取服务器和执行环境信息
$_ENV 接收服务器端环境变量(数组)

在变量前增加@符号,可忽略简单错误

如:

echo @$_POST[‘name’];

其他:

PHP获取表单数据时,根据表单下textarea、input标签的属性来接收数据

会话控制

函数 说明
cookie 保存在客户端,包含用户有关信息,有过期时间 cookie有内置数据,可直接使用 setcookie(name,value) 创建cookie
setcookie(name,’’,0) 销毁cookie()设置时间为0
session 保存在服务器,cookie升级版,无过期时间,但是长时间无请求,则清除session session为空数组,需赋值使用 session_start()
创建session $_SESSION[‘a’]=$b; session赋值
session_destroy() 销毁session(退出登录)

定界符,EOF中间所有内容将按原编码存入变量

echo <<<EOF

xxx

EOF;

文件包含

包含指定文件,实现代码复用

函数 说明
include() 文件包含失败时,会产生警告,脚本会继续运行
require() 文件包含失败时,会产生错误,直接结束脚本执行
include_once() 与inlude()功能相同,文件只会被包含一次(出现多次时只生效一次)
require_once() 与require()功能相同,文件只会被包含一次

用法:

include_once ‘header.php’;

include_once($GET[‘action’]);

若是包含变量,则可能存在文件包含漏洞

MYSQL数据类型(遵循sql编程规则)

数据类型 说明
数值型 int:整型 可以是十进制或十六进制 float:浮点型
字符串 CHAR:长字符串 VARCHAR:可变长字符串(常用)
BLOB:存储二进制数据 text:长文本信息
日期和时间 time:时间
date:日期
datetime:日期和时间

MYSQL数据库操作

配置文件

操作系统 位置
Linux /etc/my.conf
Windows 安装目录/my.ini

常用命令

函数 说明
show databases; 显示所有数据库
use dbname; 选定数默认数据库
show tables; 显示默认数据库中所有表
create database db_test; 创建数据库
use db_test; 选定数据库
create table tb_test(); 创建表
CREATE TABLE tb_news(
id INT(10) UNSIGNED UNIQUE AUTO_INCREMENT,
title VARCHAR(100) NOT NULL, author VARCHAR(20) NOT NULL,
content TEXT NOT NULL,
addtime TIMESTAMP,
PRIMARY KEY (id) );

CREATE TABLE tb_users(
id INT(10) UNSIGNED AUTO_INCREMENT,
uname VARCHAR(20) NOT NULL,
upass VARCHAR(50) NOT NULL,
activeSrc VARCHAR(100) DEFAULT ‘image/default.jpg’,
email VARCHAR(50) NOT NULL,
addtime TIMESTAMP,
PRIMARY KEY (id) );
注: UNIQUE 值唯一 id属性固定(设置自增长) KEY属性固定(设定ID为主键)
desc tb_test; 查看表内容
insert INTO tb_test (字段) VALUE (‘内容’); 新增字段,键值一一对应
insert INTO tb_test (author,title,content) VALUES (‘zs’,’title1’,’dasdasadadadad’);
select * from tb_test where xx; 查询数据
* 可替换为指定键 where限定查询范围,查询表达式运算从前往后 xx可以为:>、<、=、like 分别对应数值匹配和字符串匹配,like搭配%使用(%n查询以n结尾的数据)
select * from tb_news where content like ‘%n%’
搜索content中包含n的内容 搜索范围使用and连接,标识并列,or连接表示

或者
select * from tb_news where addtime > ‘2021-06-23 16:48:46’ and (content like ‘%8%’ or id < 16);
delete 删除
delete from tb_news;
删除表格全部数据

delete from tb_news where id =18;
最小删除单位为行 查询限制条件同select
update 修改数据
update tb_news set author = ‘zs’, title = ‘hello’;
修改全部数据

update tb_news set author = ‘zs’, title = ‘hello’ where id=2;
修改id=2的指定数据
alter table 表名 action 修改表结构 action可以为:
add 列名 建表语句 [first|afer 列名] 为表添加一列,默认列尾添加
add primary key(列名) 为表添加主键,已存在主键则报错
modify 列名 <建表语句> [first|after 列名] 更改列类型和列名称
drop 列名 删除一列 rename as 新表名 更改表名
\c 放弃正在输入的命令
\h 显示命令清单
\q 退出mysql程序
\s 查看mysql服务器状态

补充:

匹配用户名密码

select * from tb_users where uname = 'admin' and upass = '123';

注册账户

insert INTO tb_users (uname,upass ,email) VALUE ('admin','123','[email protected]');

修改密码

update tb_users set upass = md5('123123') where uname='admin';

修改表结构

alter table tb_users MODIFY column upass varchar(50);

PHP操作MYSQL数据库

常用语句

语句 说明
$db = mysqli_connect(‘127.0.0.1’,’root’,’root’); 连接数据库软件
相当于:mysql -h ‘127.0.0.1’ -uroot -proot 在被包含的配置文件中,可使用全局变量$GLOBALS[‘db’]代替$db,使得$db参数可在全局使用
mysqli_select_db($GLOBALS[‘db’],’db_bbs’); 选择数据库
mysqli_set_charset($GLOBALS[‘db’],’utf8’); 设置数据库编码格式为utf8
以上三句可写入config.php文件中,使用文件包含,避免冗余代码
$res = mysqli_query($GLOBALS[‘db’],”SQL语句”); 需要用变量接收,$res为资源类型数据(赋值后为对象类型),使用$res->num_rows取数据(判断是否为空–数据库无此数据)

可在后面衔接or die(mysqli_error($GLOBALS[‘db’]));
显示连接错误信息
$res = mysqli_query($GLOBALS[‘db’],”INSERT INTO tb_users (uname,upass,email) VALUE (‘’$uname’,’$upass’,’$email’);”); 新增用户信息至users表 若是包含变量,则最外层需要用双引号,否则变量不生效,内层用单引号,避免截断失效
$res = mysqli_query($GLOBALS[‘db’],”DELETE FROM tb_users WHERE uname=’admin’; “); 删除admin所在行,删除限定符必须唯一
$res = mysqli_query($GLOBALS[‘db’],”UPDATE tb_users SET upass=’$upass’,email=‘1@qq.com](mailto:1@qq.com)’ WHERE uname=’admin’; “); 修改admin密码邮箱
$res = mysqli_query($GLOBALS[‘db’],”SELECT * FROM tb_users;”); 查询全部数据,加where增加限制条件
常用函数
mysqli_fetch_all($res); 取出数据库查询到的全部数据,以索引(下标)数组存储数据
mysqli_fetch_array($res); 一次取一个结果,索引、关联类型分别存储,有两份数据
mysqli_fetch_row($res); 一次取一个结果,索引类型存储
mysqli_fetch_assoc($res); 一次取一个结果,关联类型存储,推荐使用
循环读取
while($r = mysqli_fetch_assoc($res)){ mysqli_query($GLOBALS,”SQL语句’); } while循环执行命令,推荐使用
for($i=0; $i<$res->num_rows; $i++){ mysqli_query($GLOBALS,”SQL语句”); } for循环执行命令,$res->num_rows为数据查询的返回条数,为0则无查询结果
注意:哪怕无查询结果,返回数据也不为false,而是一个空的对象。