您的位置:

mysqli_fetch_all详解

一、什么是mysqli_fetch_all

mysqli_fetch_all() 函数从结果集中取得所有行作为关联数组、数字数组或二者兼有。mysqli_fetch_all() 函数启动不支持的缓冲区。在调用本函数之前您需要调用mysqli_store_result() 或 mysqli_use_result()。

二、mysqli_fetch_all的语法

mysqli_fetch_all ( mysqli_result $result , int $resulttype = MYSQLI_NUM ) : mixed

$result:mysqli_query函数的返回值

$resulttype:指定返回结果集类型,可选值有MYSQLI_ASSOC(返回关联数组)、MYSQLI_NUM(返回数字索引数组)、MYSQLI_BOTH(返回同时包含数字索引和关联数组),默认为MYSQLI_NUM。

三、mysqli_fetch_all的返回值

mysqli_fetch_all() 函数返回一个包含所有选定行的数组。

数组的结构取决于使用二进制或文本类型返回每列值的方式。

返回二进制时,数组中的每个子数组包括底层二进制数据的副本。返回文本时,数组中的每个子数组包括每列的字符串表示形式。

四、mysqli_fetch_all的应用场景

mysqli_fetch_all可用于从MySQL数据库中读取数据并将其存储在PHP中,以便后续的数据处理和操作。比如进行数据分析、数据可视化等。

五、mysqli_fetch_all的使用示例

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3 OFFSET 2";

if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    $assocArray = mysqli_fetch_all($result, MYSQLI_ASSOC);
    print_r($assocArray);

    /* fetch numeric array */
    $numericArray = mysqli_fetch_all($result, MYSQLI_NUM);
    print_r($numericArray);

    /* fetch associative and numeric array */
    $assocAndNumericArray = mysqli_fetch_all($result, MYSQLI_BOTH);
    print_r($assocAndNumericArray);

    /* free result set */
    $result->free();
}

/* close connection */
$mysqli->close();

六、mysqli_fetch_all的注意事项

1、在调用mysqli_fetch_all()函数之前,必须先调用mysqli_store_result()或mysqli_use_result()。

2、当从数据库中读取大量数据时,使用$resulttype参数为MYSQLI_ASSOC的mysqli_fetch_all函数将会消耗大量的内存,因此,建议避免将大量数据存储在该函数返回的数组中。

3、mysqli_fetch_all函数返回的数组属性与mysqli_result对象的属性有关,因此,当mysqli_result对象的属性发生变化时,mysqli_fetch_all函数返回的数组也会发生变化。

七、小结

mysqli_fetch_all是一个方便的函数,能够从MySQL数据库中获取数据并以数组的形式返回,使得数据的处理更加灵活方便。使用时需要注意,特别是在读取大量数据时,需要消耗大量的内存。