12-PHP使用过的函数 111-120
111、rowCount
if ($stmt->execute($data)) {//true//读:select//写:insert,update,delete,成功后会返回表中受影响的记录数量//!rowCount() 返回受影响的记录数量if ($stmt->rowCount() > 0) {echo '新增成功,id = ' . $db->lastInsertId() . '<hr>';} else {//falseecho '新增失败';//!errorInfo返回一个数组,可以查看在哪里出错print_r($stmt->errorInfo());}
} else {//falseecho 'sql执行失败';print_r($stmt->errorInfo());
}
112、stripos
查找字符串首次出现的位置(不区分大小写)
返回在字符串
haystack
中needle
首次出现的数字位置。与 strpos() 不同,stripos() 不区分大小写。
返回 needle 存在于
haystack
字符串开始的位置(独立于偏移量)。同时注意字符串位置起始于 0,而不是 1。如果未发现 needle 将返回
false
。警告
此函数可能返回布尔值
false
,但也可能返回等同于false
的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。
<?php
$findme = 'a';
$mystring1 = 'xyz';
$mystring2 = 'ABC';$pos1 = stripos($mystring1, $findme);
$pos2 = stripos($mystring2, $findme);// 'a' 当然不在 'xyz' 中
if ($pos1 === false) {echo "The string '$findme' was not found in the string '$mystring1'";
}// 注意这里使用的是 ===。简单的 == 不能像我们期望的那样工作,
// 因为 'a' 的位置是 0(第一个字符)。
if ($pos2 !== false) {echo "We found '$findme' in '$mystring2' at position $pos2";
}
?>
113、debugDumpParams
//!debugDumpParams() 直接打印出当前执行的SQL语句的信息
//!注意,它和 var_dump() 、 php_info() 这类函数一样,是直接打印的,不是将结果返回到一个变量中。$stmt->debugDumpParams();
114、fetch
//执行sqlif ($stmt->execute()) {//fetch():逐条获取,指针自动后移指向下一条//fetch如果执行失败,就返回false,执行成功就返回记录//PDO::FETCH_ASSOCwhile($staff = $stmt->fetch(PDO::FETCH_ASSOC)){printf('<pre>%s</pre>',print_r($staff,true));}//
} else {//falseecho 'sql执行失败';print_r($stmt->errorInfo());//!debugDumpParams() 直接打印出当前执行的SQL语句的信息//!注意,它和 var_dump() 、 php_info() 这类函数一样,是直接打印的,不是将结果返回到一个变量中。$stmt->debugDumpParams();
}
115、fetchAll
//执行sqlif ($stmt->execute()) {//fetchAll():获取全部满足条件的记录$staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);foreach($staffs as $staff){printf('<pre>%s</pre>',print_r($staff,true));}//
} else {//falseecho 'sql执行失败';print_r($stmt->errorInfo());//!debugDumpParams() 直接打印出当前执行的SQL语句的信息//!注意,它和 var_dump() 、 php_info() 这类函数一样,是直接打印的,不是将结果返回到一个变量中。$stmt->debugDumpParams();
}
116、is_uploaded_file
判断文件是否是通过 HTTP POST 上传的
is_uploaded_file(string
$filename
): bool
如果
filename
所给出的文件是通过 HTTP POST 上传的则返回true
。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。
为了能使 is_uploaded_file() 函数正常工作,必段指定类似于 $_FILES['userfile']['tmp_name'] 的变量,而在从客户端上传的文件名 $_FILES['userfile']['name'] 不能正常运作。
<?phpif (is_uploaded_file($_FILES['userfile']['tmp_name'])) {echo "File ". $_FILES['userfile']['name'] ." uploaded successfully.\n";echo "Displaying contents\n";readfile($_FILES['userfile']['tmp_name']);
} else {echo "Possible file upload attack: ";echo "filename '". $_FILES['userfile']['tmp_name'] . "'.";
}?>
117、pathinfo
返回文件路径的信息
pathinfo(string
$path
, int$flags
=PATHINFO_ALL
): array|string
pathinfo() 返回一个关联数组包含有
path
的信息。返回关联数组还是字符串取决于flags
。
注意:
pathinfo() 纯粹基于输入字符串操作, 它不会受实际文件系统和类似 "
..
" 的路径格式影响。
path
要解析的路径。
flags
如果指定了,将会返回指定元素;它们包括:
PATHINFO_DIRNAME
、PATHINFO_BASENAME
、
PATHINFO_EXTENSION
、PATHINFO_FILENAME
。如果没有指定
flags
默认是返回全部的单元。
如果没有传入
options
,将会返回包括以下单元的数组 array:dirname
,basename
和extension
(如果有),以及filename
。注意:
如果
path
有一个以上的扩展名,PATHINFO_EXTENSION
只返回最后一个,而PATHINFO_FILENAME
仅剥离最后一个。 (参考第一个示例)。注意:
如果
path
没有扩展名,返回数据中就不会有extension
元素。(参考第二个示例)注意:
如果
path
中的basename
以点开始, 那后面的字符串将被解释为extension
, 并且filename
为空。(参考第三个示例)如果
flags
存在的, 则返回一个包含请求元素的 string。
示例1:
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
//!pathinfo()返回一个数组,包括文件的dirname(目录名),
//basename(当前整体名),extension(扩展名),filename(文件名)echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n";
?>
以上例程会输出:
/www/htdocs/inc lib.inc.php php lib.inc
示例2:pathinfo() 对比空扩展名和无扩展名之间区别的示例
<?php
$path_parts = pathinfo('/path/emptyextension.');
var_dump($path_parts['extension']);$path_parts = pathinfo('/path/noextension');
var_dump($path_parts['extension']);
?>
以上例程的输出类似于:
string(0) ""Notice: Undefined index: extension in test.php on line 6 NULL
示例3:pathinfo() 形如 .file 的示例
<?php
print_r(pathinfo('/some/path/.test'));
?>
以上例程的输出类似于:
Array ([dirname] => /some/path[basename] => .test[extension] => test[filename] => )
118、move_uploaded_file
将上传的文件移动到新位置
move_uploaded_file(string
$from
, string$to
): bool
本函数检查并确保由
from
指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由to
指定的文件。这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。
参数:
from
上传的文件的文件名。
to
移动文件到这个位置。
返回值:
成功时返回
true
。如果
from
不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回false
。如果
from
是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回false
。此外还会发出一条警告。
<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {if ($error == UPLOAD_ERR_OK) {$tmp_name = $_FILES["pictures"]["tmp_name"][$key];// basename() 可以防止遍历攻击文件系统;// 进一步验证/清理文件名可能是合适的$name = basename($_FILES["pictures"]["name"][$key]);move_uploaded_file($tmp_name, "$uploads_dir/$name");}
}
?>
119、md5
计算字符串的 MD5 散列值
md5(string
$string
, bool$binary
=false
): string
string
要计算的字符串。
binary
如果可选的
binary
被设置为true
,那么 md5 摘要将以 16 字符长度的原始二进制格式返回。
<?php
$str = 'apple';if (md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {echo "Would you like a green or red apple?";
}
?>
200、multiple
<input type="file" name="my_pic[]" multiple>
<button>上传</button>
<!-- 与demo3.php相比,只改了两个地方 -->
<!-- 1.只保留一个my_pic[] -->
<!-- 2.加一个multiple属性,支持多选 -->
<!-- php处理上传的代码,和demo3.php完全一样,不用动 -->
相关文章:
12-PHP使用过的函数 111-120
111、rowCount if ($stmt->execute($data)) {//true//读:select//写:insert,update,delete,成功后会返回表中受影响的记录数量//!rowCount() 返回受影响的记录数量if ($stmt->rowCount() > 0) {echo 新增成功,id . $db->lastInsertId() . <hr>;} else {//…...

【JavaWeb项目】简单搭建一个前端的博客系统
博客系统项目 本项目主要分成四个页面: 博客列表页博客详情页登录页面博客编辑页 该系统公共的CSS样式 common.css /* 放置一些各个页面都会用到的公共样式 */* {margin: 0;padding: 0;box-sizing: 0; }/* 给整个页面加上背景 */ html, body{height: 100%; }body {backgrou…...
iPerf3 -M参数详解,场景分析
本文目录iPerf3 -M参数说明几个典型测试场景中应该如何设定合适的-M参数值理想局域网模型(无丢包,无抖动)高丢包,无抖动模型高丢包,高抖动模型(网络质量比较差,IP转发路径变化频繁)总…...
java的基本语法以及注意事项
Java 基础语法一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它…...

matlab搭建IAE,ISE,ITAE性能指标
目录前言准备IAEISEITAE前言 最近在使用matlab搭建控制系统性能评价指标模型,记录一下 准备 MATLAB R2020 IAE IAE函数表达式如下所示: IAE函数模型如下所示: ISE ISE函数表达式如下所示: ISE函数模型如下所示ÿ…...

docker安装mysql
在安装Mysql之前,我们可以先查看一下我们的镜像,输入命令: docker images 能发现,镜像里面只有一个Nginx,并没有Mysql 然后我们可以像上一篇安装Nginx一样,安装Mysql镜像。 输入以下命令,安装…...
Leetcode 回溯详解
回溯法 回溯法有“通用解题法”之称,用它可以系统地搜索问题的所有解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。 在包含问题的所有解的解空间树中,按照深度优先搜索(DFS))的策略,从根结点出发深度探索解空间树。当探索…...

AI_Papers:第一期
2023.02.06—2023.02.12 文摘词云 Top Papers Subjects: cs.CL 1.Multimodal Chain-of-Thought Reasoning in Language Models 标题:语言模型中的多模式思维链推理 作者:Zhuosheng Zhang, Aston Zhang, Mu Li, Hai Zhao, George Karypis, Alex Sm…...

C/C++内存管理
C/C内存管理C/C内存分布C语言中内存管理的方式:malloc/calloc/realloc/freeC内存管理方式内置类型自定义类型operator new 与operator deletenew和delete的实现原理内置类型自定义类型定位new表达式(placement-new)new/delete与malloc/free的区别C/C内存分布 我们先…...

【大数据hive】hive 函数使用详解
一、前言 在任何一种编程语言中,函数可以说是必不可少的,像mysql、oracle中,提供了很多内置函数,或者通过自定义函数的方式进行定制化使用,而hive作为一门数据分析软件,随着版本的不断更新迭代,…...

彻底搞懂分布式系统服务注册与发现原理
目录 引入服务注册与发现组件的原因 单体架构 应用与数据分离...
安卓Camera2用ImageReader获取NV21源码分析
以前如何得到Camera预览流回调 可以通过如下方法,得到一路预览回调流 Camera#setPreviewCallbackWithBuffer(Camera.PreviewCallback),可以通过如下方法,设置回调数据的格式,比如 ImageFormat.NV21 Camera.Parameters#setPreview…...

24. 两两交换链表中的节点
文章目录题目描述迭代法递归法参考文献题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入&a…...
linux006之帮助命令
linux帮助命令简介: linux的命令是非常多的,光靠人是记不住的,在工作中一般都会去网上查,这是有外网的情况下,如果项目中不允许访问外网,那么linux的帮助命令就可以派上用场了, linux帮助命令是…...

【C++初阶】十三、模板进阶(总)|非类型模板参数|模板的特化|模板分离编译|模板总结(优缺点)
目录 一、非类型模板参数 二、模板的特化 2.1 模板特化概念 2.2 函数模板特化 2.3 类模板特化 2.3.1 全特化 2.3.2 偏特化 三、模板分离编译 四、模板总结(优缺点) 前言:之前模板初阶并没有把 C模板讲完,因为当时没有接触…...

Linux之文本搜索命令
文本搜索命令学习目标能够知道文本搜索使用的命令1. grep命令的使用命令说明grep文本搜索grep命令效果图:2. grep命令选项的使用命令选项说明-i忽略大小写-n显示匹配行号-v显示不包含匹配文本的所有行-i命令选项效果图:-n命令选项效果图:-v命令选项效果图:3. grep命令结合正则表…...

微信小程序Springboot 校园拼车自助服务系统java
系统管理员: 管理员账户管理:在线对管理员的账户信息进行管理,包括对管理员信息的增加修改以及密码的修改等。 站内新闻管理:在后台对站内新闻信息进行发布,并能够对站内新闻信息进行删除修改等。 论坛版块管理&#x…...

【Unity3D 常用插件】Haste插件
一,Haste介绍 Haste插件是一款针对 Unity 3D 的 Everthing软件,可以实现基于名称快速定位对象的功能。Unity 3D 编辑器也自带了搜索功能,但是在 project视图 和 Hierarchy视图 中的对象需要分别查找,不支持模糊匹配。Haste插件就…...
【c++面试问答】全局变量和局部变量的区别
问题 C中的全局变量和局部变量有什么区别? 注:内容全部参考自文末的参考资料 全局变量和局部变量的区别 可以从以下4个角度来区分: 区别全局变量局部变量作用域全局作用域局部作用域内存分配全局变量在静态数据区静态局部变量在静态数据区…...

Java List集合
6 List集合 List系列集合:添加的元素是有序,可重复,有索引 ArrayList: 添加的元素是有序,可重复,有索引LinkedList: 添加的元素是有序,可重复,有索引Vector :是线程安全的ÿ…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
拟合问题处理
在机器学习中,核心任务通常围绕模型训练和性能提升展开,但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正: 一、机器学习的核心任务框架 机…...

Redis上篇--知识点总结
Redis上篇–解析 本文大部分知识整理自网上,在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库,Redis 的键值对中的 key 就是字符串对象,而 val…...

Qwen系列之Qwen3解读:最强开源模型的细节拆解
文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...
python读取SQLite表个并生成pdf文件
代码用于创建含50列的SQLite数据库并插入500行随机浮点数据,随后读取数据,通过ReportLab生成横向PDF表格,包含格式化(两位小数)及表头、网格线等美观样式。 # 导入所需库 import sqlite3 # 用于操作…...

Spring是如何实现无代理对象的循环依赖
无代理对象的循环依赖 什么是循环依赖解决方案实现方式测试验证 引入代理对象的影响创建代理对象问题分析 源码见:mini-spring 什么是循环依赖 循环依赖是指在对象创建过程中,两个或多个对象相互依赖,导致创建过程陷入死循环。以下通过一个简…...
DriveGPT4: Interpretable End-to-end Autonomous Driving via Large Language Model
一、研究背景与创新点 (一)现有方法的局限性 当前智驾系统面临两大核心挑战:一是长尾问题,即系统在遇到新场景时可能失效,例如突发交通状况或非常规道路环境;二是可解释性问题,传统方法无法解释智驾系统的决策过程,用户难以理解车辆行为的依据。传统语言模型(如 BERT…...

【计算机网络】SDN
SDN这种新型网络体系结构的核心思想:把网络的控制层面与数据层面分离,而让控制层面利用软件来控制数据层面中的许多设备。 OpenFlow协议可以被看成是SDN体系结构中控制层面与数据层面之间的通信接口。 在SDN中取代传统路由器中转发表的是“流表”&…...