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,而是一个空的对象。 |