值得注意的是,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() 用于结果(如查询的结果)。
因此,如果您想将 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()