php入门学习笔记(2/3):函数、运算符、循环,php操作MySQL

博主因学习文件上传漏洞接触大量PHP代码,借此系统学习并整理记录。内容涵盖PHP函数(自定义、字符串、数组等)、运算符(基本、赋值等)、循环(while、for等),还介绍了PHP通过PDO操作MySQL数据库的方法及查询、插入等基础操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近在学习文件上传漏洞,因此接触到大量的php代码,借此机会系统地学习了一下php,整理记录如下

一、函数

Ⅰ. 自定义函数

<?php

// 创建函数
function fun_name($para1, $para2, ...)
{
    // 函数主体
}

?>
// 调用函数
fun_name($para1, $para2, ...);

Ⅱ. String的相关函数

序号函数名描述
1strtolower(string)转为小写,返回string【防御大小写绕过】
2strtoupper(string)转为大写,返回string【防御大小写绕过】
3strlen(string)返回字符串长度,返回int
4trim(string)去除字符串左右两边的某些字符(默认空白符),返回string【防御空格绕过】
5ltrim(string)去除字符串左边的某些字符(默认空白符),返回string
6rtrim(string)去除字符串右边的某些字符(默认空白符),返回string
7str_replace(mixed1, mixed2, mixed3)将mixed3中的所有mix1用mixed2替换,返回mixed
8strpbrk(string1, string2)*(string pointer break)*在string1中查找string2,返回string
9explode(string1, string2)用string1将string2分割,返回array

Ⅲ. Array的相关函数

序号函数名描述
1count(array)返回数组中数据单元的数量,返回int
2implode(string, array)用字符串连接数组元素,返回array
3array_merge(array1, array2, ...)将两个数组合并为一个数组,返回array
4in_array(mixde, array)判断数组中是否存在指定的值,返回bool
5sort(array)对数值数组进行升序排序,返回bool
6rsort(array)*(reverse)*对数值数组进行降序排序,返回bool
7array_unique(array)移除数组中重复的值,返回array
8array_push(array, mixed1, mixed2, ...)将元素(可以是多个)压入数组末尾,数组长度对应增加,返回int
9array_pop(array)弹出并返回数组的最后一个元素,返回mixed

Ⅳ. 文件系统函数

序号函数名描述
1basename(string $path, string $suffix = “”)返回路径中的文件名部分(string)
2fopen( string $filename, string $mode, bool $use_include_path = false, ?resource $context = null)将$filename指定的名字资源绑定到一个流上,返回resource|false
3fclose(resource $stream)$stream指向的文件关闭,返回bool
4fwrite(resource $stream, string $data, ?int $length = null)$data的内容写入文件指针$stream中,返回int|false
5fread(resource $stream, int $length)从文件指针$stream读取最多$length个字节,返回string|false
6rename(string $from, string $to, ?resource $context = null)$from命名为$to,返回bool
7unlink(string $filename, ?resource $context = null)删除$filename,返回bool
8move_uploaded_file(string $from, string $to)检查由$from指定的文件是否是合法的上传文件,若合法,则将其移动至$to指定的文件,返回bool

Ⅴ. 其他常用函数

isset()   // 用于判断一个变量是否声明,返回bool
empty()   // 用于判断一个变量是否为空,返回bool
unset()   // 用于释放一个变量,返回void
reset()   // 指向第一个数据单元,并返回其值(mixed)
end()     // 指向最后一个数据单元,并返回其值(mixed)
    ... ...

Ⅵ. 作用域

  • 作用域:函数作用域 + 全局作用域
  • 函数作用域中的变量在外部无法访问
  • 而全局作用域中的变量在函数内部可以访问
  • 注意,一定要在调用函数后才能访问其中的全局变量
<?php

    // 在函数内部使用global声明变量
    function glo_def(){
        global $glo_str;
        $glo_str = "我在全局作用域";
    }

    glo_def();
    // 则视为其在全局作用域
    // 注意,一定要在调用函数后才能访问其中的全局变量
    var_dump($glo_str);

    // string(21) "我在全局作用域" 
?>

二、运算符

Ⅰ. 基本运算符

序号运算符描述
1+相加
2-相减
3*相乘
4/相除
5%取余
6++$var预递增
7--$var预递减
8$var++后递增
9$var--后递减
10.连接"字符串"

Ⅱ. 赋值运算符

序号运算符描述
1=赋值
2+=先相增,后赋值
3-=先相减,后赋值
4*=先相乘,后赋值
5/=先相除,后赋值
6%=先取余,后赋值
7.=先连接,后赋值

Ⅲ. 比较运算符

序号运算符描述
1>大于
2>=大于或等于
3<小于
4<=小于或等于
5==等于
6!=<>不等于
7===绝对等于(值和类型均相等)
8!==不绝对等于(值或类型中有一项不相等)

Ⅳ. 逻辑运算符

序号运算符描述
1and&&
2or和`
3xor异或
4!

三、循环

Ⅰ. while

<?php
    // 先进行while()中的判断,再执行{}中的代码
    
    $num = 0;
    while ($num <= 5) {
        echo "$num";
        echo "<hr/>";
        $num += 1;
    }

    // 0
    // -----------------------------
    // 1
    // -----------------------------
    // 2
    // -----------------------------
    // 3
    // -----------------------------
    // 4
    // -----------------------------
    // 5
    // -----------------------------
?>

Ⅱ. do…while

<?php
    // 先执行do{}中的贷后,再进行while()中的判断
    
    $num = -1;
    do{
        $num += 1;
        echo "$num";
        echo "<hr/>";
    }while(($num >= 0) && ($num <= 5));

    // 0
    // -----------------------------
    // 1
    // -----------------------------
    // 2
    // -----------------------------
    // 3
    // -----------------------------
    // 4
    // -----------------------------
    // 5
    // -----------------------------
    // 6
?>

Ⅲ. for

<?php
    // for(初始值;判断条件;在{}之后会执行的代码(增量))

    for($num = 0; $num <= 5; $num++){
        echo "$num";
        echo "<hr/>";
    }

    // 0
    // -----------------------------
    // 1
    // -----------------------------
    // 2
    // -----------------------------
    // 3
    // -----------------------------
    // 4
    // -----------------------------
    // 5
    // -----------------------------
?>

Ⅳ. continue

  • 结束此次循环,并进入下一次循环

Ⅴ. break

  • 结束循环
  • 可以跳出多层循环:break (要跳出的循环层数,默认为1);

四、php操作MySQL

Ⅰ. PDO操作数据库

1. PDO(Php Data Object)——php数据对象

  • PDO提供了一个数据访问抽象层,统一了php访问各种类型数据库的访问方式

2. PDO连接

$pdo = new PDO($dsn, $username, $password);
// new -- 新建
// PDO -- PDO类
// $dsn -- DataSourceName数据源名称
// $pdo -- 作为PDO类的一个实例

3. 编码

// 方法一
header('content-type:text/html;charset=utf-8');

// 方法二
$pdo = new PDO('mysql:host=localhost;dbname=blogs', 'root', 'root', array(PDO::MYSQL_ALTR_INIT_COMMAND => "SET NAMES utf8"));
    
//方法三
$pdo->query('SET NAMES utf8');

Ⅱ. MySQL基础操作

1. 查询

# WHERE条件
SELECT * FROM article
WHERE `class` = 'PHP';
# 选择要返回字段
SELECT title, img, date, class FROM article
WHERE `class` = 'PHP';
# LIMIT分页
SELECT title, img, date, class FROM article
WHERE `class` = 'PHP' LIMIT 2;

SELECT title, img, date, class FROM article
WHERE `class` = 'PHP' LIMIT 0,2;
# ORDER BY排序语句
# ASC              正序(默认)--ascending
# DESC             逆序--descending

SELECT * FROM arctile
WHERE `class` = 'PHP'
ORDER BY `date` DESC;

2. 插入

INSERT INTO article (`title`, `img`, `content`, `date`, `class`)
VALUES('the_title', 'the_img', 'the_content', '2022-10-15', 'PHP');

3. 修改

UPDATE article
SET `title` = `new_title`, `content` = 'new_content'
WHERE `title` = 'the_title'; # 若不增加WHERE条件,则会修改整个表

4. 删除

DELETE FROM article
WHERE `title` = 'the_title'; # 若不增加WHERE条件,则会删除整个表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Neonline

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

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

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

打赏作者

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

抵扣说明:

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

余额充值