📌  相关文章
📜  mysqli_fetch_all() 期望参数 1 为 mysqli_result,布尔值在 C:\xampp\htdocs\complete-blog-php\admin\includes\post_functions.php 第 31 行给出 - PHP (1)

📅  最后修改于: 2023-12-03 15:03:07.875000             🧑  作者: Mango

该错误提示是由 PHP 解释器直接生成的,告诉开发者在执行相关代码时出现了问题。在这个错误提示中,我们可以看到是在执行 C:\xampp\htdocs\complete-blog-php\admin\includes\post_functions.php 第 31 行时出现了问题。具体来说,是因为使用了错误的参数类型,即 mysqli_fetch_all() 函数的参数 1 应为 mysqli_result 类型。

mysqli_fetch_all() 函数用于从结果集中获取所有的行作为关联数组、数字数组或同时包含两者的数组。该函数有一个必需的参数 1,即 MySQL 查询语句执行后得到的结果集对象 mysqli_result。因此,在调用该函数之前,需要先判断查询是否成功,以及是否获取到了结果集对象。

为了避免这个错误,开发者需要仔细查看代码并检查 mysqli_fetch_all() 函数的参数是否正确。同时,还需要查看查询语句是否正确,是否成功执行,并根据需要对结果集进行类型转换。

建议开发者在编写代码时多运用调试技巧,如输出变量值或使用调试工具,以便更快地定位问题所在,并快速找到解决方案。

代码片段
### post_functions.php

函数功能:获取文章列表

参数:

返回值:markdown格式的字符串

```php
/**
 * 获取文章列表
 *
 * @return string markdown格式的字符串
 */
function get_posts() {
    global $connection;

    // 查询所有文章
    $query = "SELECT * FROM posts";
    $result = mysqli_query($connection, $query);

    // 检查查询结果是否为空
    if (mysqli_num_rows($result) == 0) {
        return "没有找到任何文章";
    }

    // 从结果集中获取所有的行作为关联数组
    $posts = mysqli_fetch_all($result, MYSQLI_ASSOC);

    // 初始化markdown格式的字符串
    $markdown = "";

    // 遍历文章列表,并按照markdown格式进行排版
    foreach ($posts as $post) {
        $markdown .= "## " . $post['title'] . "\n\n";
        $markdown .= "*By " . $post['author'] . " on " . $post['date'] . "*\n\n";
        $markdown .= $post['content'] . "\n\n";
    }

    // 返回markdown格式的字符串
    return $markdown;
}