值得注意的是,MySQLi 函数(并且,我假设 MySQL 函数)无论 MySQL 数据类型如何都获取字符串。例如,如果您获取包含整数列的行,则该列和行的对应值仍将作为字符串存储在 mysql_fetch_row 返回的数组中。
(PHP 5, PHP 7, PHP 8)
mysqli_result::fetch_row -- mysqli_fetch_row — 将结果集的下一行作为枚举数组获取
面向对象风格
过程化风格
从结果集中获取一行数据,并将其作为枚举数组返回,其中每列都存储在从 0(零)开始的数组偏移量中。对该函数的每次后续调用都将返回结果集中的下一行,或者如果不再有行则返回null
。
注意: 此函数将 NULL 字段设置为 PHP
null
值。
result
仅过程化风格:由 mysqli_query()、mysqli_store_result()、mysqli_use_result() 或 mysqli_stmt_get_result() 返回的 mysqli_result 对象。
示例 #1 mysqli_result::fetch_row() 示例
面向对象风格
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";
$result = $mysqli->query($query);
/* 获取对象数组 */
while ($row = $result->fetch_row()) {
printf("%s (%s)\n", $row[0], $row[1]);
}
过程化风格
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";
$result = mysqli_query($mysqli, $query);
/* 获取关联数组 */
while ($row = mysqli_fetch_row($result)) {
printf("%s (%s)\n", $row[0], $row[1]);
}
以上示例将输出类似以下内容
Pueblo (USA) Arvada (USA) Cape Coral (USA) Green Bay (USA) Santa Clara (USA)
值得注意的是,MySQLi 函数(并且,我假设 MySQL 函数)无论 MySQL 数据类型如何都获取字符串。例如,如果您获取包含整数列的行,则该列和行的对应值仍将作为字符串存储在 mysql_fetch_row 返回的数组中。
请注意,mysqli_fetch() 已弃用,但仍位于 PHP 函数列表中。mysqli_fetch_row() 现在是 mysql 过程化样式使用的,但未列在 PHP 函数中。
请记住,fetch() 和 fetch_row() 是两件不同的事情,并且使用方法不同。
- fetch() 用于语句(如已执行的预处理语句),并且需要与 bind_result() 结合使用。
- fetch_row() 用于结果(如 query() 的结果)。
因此,如果您想将 fetch_row() 与已执行的预处理语句一起使用,首先必须使用 mysqli_store_result() 或 mysqli_use_result() 从该语句中获取结果。
来自“README.PHP4-TO-PHP5-THIN-CHANGES”
4. 从 ext/mysql 移植到 ext/mysqli 时要小心。以下
函数在结果集中没有更多数据可用时返回 NULL
(ext/mysql 的函数返回 FALSE)。
- mysqli_fetch_row()
- mysqli_fetch_array()
- mysqli_fetch_assoc()