111、rowCount
if ($stmt->execute($data)) {
//true
//读:select
//写:insert,update,delete,成功后会返回表中受影响的记录数量
//!rowCount() 返回受影响的记录数量
if ($stmt->rowCount() > 0) {
echo '新增成功,id = ' . $db->lastInsertId() . '<hr>';
} else {
//false
echo '新增失败';
//!errorInfo返回一个数组,可以查看在哪里出错
print_r($stmt->errorInfo());
}
} else {
//false
echo '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
//执行sql
if ($stmt->execute()) {
//fetch():逐条获取,指针自动后移指向下一条
//fetch如果执行失败,就返回false,执行成功就返回记录
//PDO::FETCH_ASSOC
while($staff = $stmt->fetch(PDO::FETCH_ASSOC)){
printf('<pre>%s</pre>',print_r($staff,true));
}
//
} else {
//false
echo 'sql执行失败';
print_r($stmt->errorInfo());
//!debugDumpParams() 直接打印出当前执行的SQL语句的信息
//!注意,它和 var_dump() 、 php_info() 这类函数一样,是直接打印的,不是将结果返回到一个变量中。
$stmt->debugDumpParams();
}
115、fetchAll
//执行sql
if ($stmt->execute()) {
//fetchAll():获取全部满足条件的记录
$staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($staffs as $staff){
printf('<pre>%s</pre>',print_r($staff,true));
}
//
} else {
//false
echo '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'] 不能正常运作。
<?php
if (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完全一样,不用动 -->