PHP-基础
- 介绍
- 本地环境安装
- 安装 WNMP 环境
- 代码编辑器选择
- 语法
- 变量与常量
- 常见输出函数
- 数据类型之四种标量类型
- 数据类型之三种复合类型
- 数据类型之两种特殊类型
- Operators:运算符
- 流程控制:条件判断语句
- 流程控制:循环语句
- 流程控制:中止语句
- 函数
- 类和对象:基本概念
- 类和对象:类结构
- 类和对象:面向对象
- 类和对象:三种特殊类
- 类和对象
- 类和对象:Trait
- 类和对象:魔术方法
- 命名空间
- 【实战】PHP表单
PHP-函数
-
String
- addcslashes()
- addslashes()
- bin2hex()
- chop()
- chr()
- chunk_split()
- convert_cyr_string()
- convert_uudecode()
- convert_uuencode()
- count_chars()
- crc32()
- crypt()
- echo
- explode()
- fprintf()
- get_html_translation_table()
- hebrev()
- hebrevc()
- hex2bin()
- htmlentities()
- htmlspecialchars()
- htmlspecialchars_decode()
- html_entity_decode()
- implode()
- join()
- lcfirst()
- levenshtein()
- localeconv()
- ltrim()
- md5()
- md5_file()
- metaphone()
- money_format()
- nl2br()
- nl_langinfo()
- number_format()
- ord()
- parse_str()
- printf
- quoted_printable_decode()
- quoted_printable_encode()
- quotemeta()
- rtrim()
- setlocale()
- sha1()
- sha1_file()
- similar_text()
- soundex()
- sprintf()
- sscanf()
- strcasecmp()
- strchr()
- strcmp()
- strcoll()
- strcspn()
- stripcslashes()
- stripos()
- stripslashes()
- strip_tags()
- stristr()
- strlen()
- strnatcasecmp()
- strnatcmp()
- strncasecmp()
- strncmp()
- strpbrk()
- strpos()
- strrchr()
- strrev()
- strripos()
- strrpos()
- strspn()
- strstr()
- strtok()
- strtolower()
- strtoupper()
- strtr()
- str_getcsv()
- str_ireplace()
- str_pad()
- str_repeat()
- str_replace()
- str_rot13()
- str_shuffle()
- str_split()
- str_word_count()
- substr()
- substr_compare()
- substr_count()
- substr_replace()
- trim()
- ucfirst()
- ucwords()
- vfprintf()
- vprintf()
- vsprintf()
- wordwrap()
-
Array
- array()
- array_change_key_case()
- array_chunk()
- array_column()
- array_combine()
- array_count_values()
- array_diff()
- array_diff_assoc()
- array_diff_key()
- array_diff_uassoc()
- array_diff_ukey()
- array_fill()
- array_fill_keys()
- array_filter()
- array_flip()
- array_intersect()
- array_intersect_assoc()
- array_intersect_key()
- array_intersect_uassoc()
- array_intersect_ukey()
- array_keys()
- array_key_exists()
- array_key_first()
- array_key_last()
- array_map()
- array_merge()
- array_merge_recursive()
- array_multisort()
- array_pad()
- array_pop()
- array_product()
- array_push()
- array_rand()
- array_reduce()
- array_replace()
- array_replace_recursive()
- array_reverse()
- array_search()
- array_shift()
- array_slice()
- array_splice()
- array_sum()
- array_udiff()
- array_udiff_assoc()
- array_udiff_uassoc()
- array_uintersect()
- array_uintersect_assoc()
- array_uintersect_uassoc()
- array_unique()
- array_unshift()
- array_values()
- array_walk()
- array_walk_recursive()
- arsort()
- asort()
- compact()
- count()
- current()
- each()
- end()
- extract()
- in_array()
- key()
- key_exists()
- krsort()
- ksort()
- list()
- natcasesort()
- natsort()
- next()
- pos()
- prev()
- range()
- reset()
- rsort()
- shuffle()
- sizeof()
- sort()
- uasort()
- uksort()
- usort()
-
File
- basename()
- chgrp()
- chmod()
- chown()
- clearstatcache()
- copy()
- dirname()
- diskfreespace()
- disk_free_space()
- disk_total_space()
- fclose()
- feof()
- fflush()
- fgetc()
- fgetcsv()
- fgets()
- fgetss()
- file()
- fileatime()
- filectime()
- filegroup()
- fileinode()
- filemtime()
- fileowner()
- fileperms()
- filesize()
- filetype()
- file_exists()
- file_get_contents()
- file_put_contents()
- flock()
- fnmatch()
- fopen()
- fpassthru()
- fputcsv()
- fputs()
- fread()
- fscanf()
- fseek()
- fstat()
- ftell()
- ftruncate()
- fwrite()
- glob()
- is_dir()
- is_executable()
- is_file()
- is_link()
- is_readable()
- is_uploaded_file()
- is_writable()
- is_writeable()
- lchgrp()
- lchown()
- link()
- linkinfo()
- lstat()
- mkdir()
- move_uploaded_file()
- parse_ini_file()
- parse_ini_string()
- pathinfo()
- pclose()
- popen()
- readfile()
- readlink()
- realpath()
- realpath_cache_get()
- realpath_cache_size()
- rename()
- rewind()
- rmdir()
- set_file_buffer()
- stat()
- symlink()
- tempnam()
- tmpfile()
- touch()
- umask()
- unlink()
-
Datetime
- checkdate()
- date()
- date_add()
- date_create()
- date_create_from_format()
- date_date_set()
- date_default_timezone_get()
- date_default_timezone_set()
- date_diff()
- date_format()
- date_get_last_errors()
- date_interval_create_from_date
- date_interval_format()
- date_isodate_set()
- date_modify()
- date_offset_get()
- date_parse()
- date_parse_from_format()
- date_sub()
- date_sunrise()
- date_sunset()
- date_sun_info()
- date_timestamp_get()
- date_timestamp_set()
- date_timezone_get()
- date_timezone_set()
- date_time_set()
- getdate()
- gettimeofday()
- gmdate()
- gmmktime()
- gmstrftime()
- idate()
- localtime()
- microtime()
- mktime()
- strftime()
- strptime()
- strtotime()
- time()
- timezone_abbreviations_list()
- timezone_identifiers_list()
- timezone_location_get()
- timezone_name_from_abbr()
- timezone_name_get()
- timezone_offset_get()
- timezone_open()
- timezone_transitions_get()
- timezone_version_get()
-
Filter
-
HTTP
-
cURL
- curl_close()
- curl_copy_handle()
- curl_errno()
- curl_error()
- curl_escape()
- curl_exec()
- curl_file_create()
- curl_getinfo()
- curl_init()
- curl_multi_add_handle()
- curl_multi_close()
- curl_multi_errno()
- curl_multi_exec()
- curl_multi_getcontent()
- curl_multi_info_read()
- curl_multi_init()
- curl_multi_remove_handle()
- curl_multi_select()
- curl_multi_setopt()
- curl_multi_strerror()
- curl_pause()
- curl_reset()
- curl_setopt()
- curl_setopt_array()
- curl_share_close()
- curl_share_errno()
- curl_share_init()
- curl_share_setopt()
- curl_share_strerror()
- curl_strerror()
- curl_unescape()
- curl_version()
-
PDO
-
PDOStatement
fetch()
1. 定义
该方法从PDOStatement
结果集中获取下一行。
返回行的形式由传入的参数决定。
一旦失败,返回 FALSE。
注:
- MySQL 数据库驱动和 SQLite 数据库驱动并不支持可滚动游标。
2. 语法
PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] ) : mixed
3. 参数说明
参数 | 可选性 | 数据类型 | 描述 |
---|---|---|---|
$fetch_style | 可选 | 整型或常量 | PDO::FETCH_* 系列的常量之一,默认为PDO::FETCH_BOTH |
$cursor_orientation | 可选 | 整型或常量 | 决定可滚动游标的哪一行被返回,PDO::FETCH_ORI_* 系列常量之一,默认为PDO::FETCH_ORI_NEXT (返回下一行) |
$cursor_offset | 可选 | 整型 | 获取行号或游标偏移位置 |
其中,$fetch_style
的值有以下可选项:
PDO::FETCH_ASSOC
:结果集返回一个索引为列名的关联数组PDO::FETCH_BOTH
:默认值。结果集分别返回以索引为列名和从零开始的数字的关联数组PDO::FETCH_BOUND
:返回TRUE
,并将结果集中的列值分配给使用PDOStatement::bindColumn()
方法绑定到的 PHP 变量PDO::FETCH_CLASS
:返回所请求类的新实例,并将结果集的列值映射到该类中的命名属性。如果$fetch_style
包含PDO::FETCH_CLASSTYPE
,则类名由第一列的值决定PDO::FETCH_INTO
:更新请求的类中已存在的实例,并将结果集的列值映射到该类中的命名属性PDO::FETCH_LAZY
:相当于PDO::FETCH_BOTH | PDO::FETCH_OBJ
,创建用来访问的对象变量名PDO::FETCH_NUM
:结果集返回一个数字索引的数组PDO::FETCH_OBJ
:结果集返回一个以列名为属性名的匿名对象
另外,PDO::FETCH_ORI_*
系列常量有以下可选值:
PDO::FETCH_ORI_NEXT
:在结果集中获取下一行。仅对可滚动游标有效。PDO::FETCH_ORI_PRIOR
:在结果集中获取上一行。仅对可滚动游标有效。PDO::FETCH_ORI_FIRST
:在结果集中获取第一行。仅对可滚动游标有效。PDO::FETCH_ORI_LAST
:在结果集中获取最后一行。仅对可滚动游标有效。PDO::FETCH_ORI_ABS
:根据行号从结果集中获取需要的行。仅对可滚动游标有效。PDO::FETCH_ORI_REL
:根据当前游标位置的相对位置从结果集中获取需要的行。仅对可滚动游标有效。
最后,如果要使用可移动游标,则必须在PDOStatement::prepare()
预处理 SQL 语句时,设置PDO::ATTR_CURSOR
属性值为PDO::CURSOR_SCROLL
。
$cursor_offset
在cursor_orientation
参数被设置为PDO::FETCH_ORI_ABS
(根据行号获取需要的行)时,该参数应该为“需要获取的行号值”;而cursor_orientation
参数被设置为PDO::FETCH_ORI_REL
(根据游标位置的相对位置获取需要的行)时,该参数为游标的偏移数。
4. 示例
<?php
// PDOStatement::fetch()
// 从`PDOStatement`结果集中获取下一行
try {
$config = ['driver' => 'mysql', 'host' => 'localhost', 'dbname' => 'test', 'charset' => 'utf8', 'user' => 'root', 'pwd' => 'mysql'];
$dsn = sprintf('%s:host=%s;dbname=%s;charset=%s', $config['driver'], $config['host'], $config['dbname'], $config['charset']);
$conn = new PDO($dsn, $config['user'], $config['pwd']);
} catch (PDOException $e) {
error_log($e->getMessage());
echo $e->getMessage();
}
try {
$sql = 'SELECT `name`,`rate`,`cover` FROM `movie` WHERE `id` > 0 ORDER BY `id`';
$stmt = $conn->prepare($sql);
$stmt->execute();
$res = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($res);
/* 输出:
array(3) {
["name"]=>
string(21) "哪吒之魔童降世"
["rate"]=>
string(3) "8.5"
["cover"]=>
string(74) "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2563780504.jpg"
}
*/
$res = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT);// 获取下一行数据的关联数组
var_dump($res);
/* 输出:
array(3) {
["name"]=>
string(15) "我不是药神"
["rate"]=>
string(3) "9.0"
["cover"]=>
string(74) "https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2561305376.jpg"
}
*/
$res = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_PRIOR);// 获取上一行数据的关联数组
var_dump($res);// 但结果还是下一行的数据,因为还没有设置可滚动游标
/* 输出:
array(3) {
["name"]=>
string(33) "续命之徒:绝命毒师电影"
["rate"]=>
string(3) "8.3"
["cover"]=>
string(74) "https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2569548689.jpg"
}
*/
// 开始设置可滚动游标:注意,这里是MySQL驱动,并不支持可滚动游标,因此以下代码得不到期望的结果
$stmt = $conn->prepare($sql, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
$stmt->execute();
$res = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 3);// 获取指定行数据的关联数组
var_dump($res);
/* 输出:
array(3) {
["name"]=>
string(21) "哪吒之魔童降世"
["rate"]=>
string(3) "8.5"
["cover"]=>
string(74) "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2563780504.jpg"
}
*/
} catch (Exception $e) {
echo "发生了错误:", $e->getMessage();
}
5. 延展阅读
- PDO::prepare():对待执行的 SQL 语句进行预处理,并返回该 SQL 语句的语句对象
PDOStatement
- PDOStatement::execute():执行一条预处理语句
- PDOStatement::fetchAll():与
PDOStatement::fetch()
方法不同,返回结果集中剩余的所有行 - PDOStatement::fetchColumn():从结果集的下一行获取指定列值
- PDOStatement::fetchObject():获取
PDOStatement
结果集中下一行的数据,并将其作为一个对象返回 - PDOStatement::setFetchMode():为 PDO 语句设置默认的获取结果集模式