当前位置: 首页 > 知识库问答 >
问题:

用MySqli和数组返回多行

柴禄
2023-03-14

在过去的两天左右,我一直在将我的函数转换为mysqli。我遇到了一个问题。我有一个函数,它返回一个数组,其中包含数据库中的一行。但是,我希望数组包含多行,而不是一行。此外,我将如何能够呼应个别的帖子。下面是我失败的尝试,它只显示数组中的一行。

$mysqli = new mysqli("localhost", "user", "password", "database");   

function display_posts ($mysqli, $user_id) {

   $fields = "`primary_id`, `poster_id`, `profile_user_id`, `post`";   

   $user_id = (int)$user_id;

   $query = "SELECT DISTINCT $fields FROM `posts` WHERE `profile_user_id` = $user_id 
   LIMIT 4";                    

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

   $row = $result->fetch_assoc();

   return $row;

   $result->free();

   $stmt->close();

}}

这里我正在尝试显示数据。

$user_id = 1;

$posts = display_posts($mysqli, $user_id);

//Not sure what to do with $posts. A While loop perhaps to display each post?

共有3个答案

潘畅
2023-03-14

我迟到了,但我相信这是你想要实现的:

$mysqli = new mysqli("localhost", "user", "password", "database");
$fields = "`primary_id`, `poster_id`, `profile_user_id`, `post`";

function display_posts () {

    global $mysqli;
    global $fields;

    $query = "SELECT DISTINCT $fields FROM `posts` WHERE `profile_user_id` = $user_id LIMIT 4";

    $posts = $mysqli -> query($query) or die('Error: '.$mysqli -> error);

    if ($posts -> num_rows > 0) {

        while ($row = $posts -> fetch_assoc()) {

        $value = $row['/*The table column here (You can repeat this line with a different variable e.g. $value 2, $value 3 etc and matching them with the respective table column)*/'];

        echo $value./*Concatenate the other variables ($value 1 etc) here*/'<br />';

        }

    }else {

        echo 'No records found.';

    }

}

//Call the function
display_posts ();
姚阳德
2023-03-14

为什么不这样直接使用:

$result = mysqli_fetch_all($mysqli->query($query), MYSQLI_ASSOC);
姜献
2023-03-14

您必须使用一个循环一次获得它们:

<?php
function resultToArray($result) {
    $rows = array();
    while($row = $result->fetch_assoc()) {
        $rows[] = $row;
    }
    return $rows;
}

// Usage
$query = 'SELECT DISTINCT $fields FROM `posts` WHERE `profile_user_id` = $user_id LIMIT 4';
$result = $mysqli->query($query);
$rows = resultToArray($result);
var_dump($rows); // Array of rows
$result->free();
 类似资料:
  • 问题内容: 在过去的两天左右,我一直在将函数转换为mysqli。我遇到了一个问题。我有一个函数,该函数从数据库返回一个包含行的数组。但是,我希望数组包含多行而不是一行。另外,我将如何回显各个帖子。这是我失败的尝试,仅在阵列中显示一行。 在这里,我试图显示数据。 问题答案: 您必须使用循环来一次获取所有内容:

  • 问题内容: 我绝对不知道为什么这段代码不会返回数组…我觉得我的编译器有问题: 该代码什么也不返回。这让我疯狂! 问题答案: 它正在返回数组,但是所有返回的东西(包括Array)所做的只是听起来像:返回值。在您的情况下,您将获得的值,它恰好是一个数组(可以是任何数组,您仍然会遇到此问题),然后将其放在那里。 当函数返回任何内容时,它实际上是用返回值替换调用它的行(在您的情况下:)。因此,您的方法实际

  • 问题内容: 此代码仅返回一行,但应返回2行。我在phpMyAdmin中尝试了SQL,它完美返回了2行。我在这里做错了什么? 顺便说一句,上面的代码通过以下脚本将程序移至profile.php: 问题答案: 您需要遍历结果(如TheSmose所述) 并且 您需要将结果数组发送到模板而不是。 改变这个 对此 如果您不只是想要模板中的内容(并且您不需要PHP> = 5.3 ),那么您将需要在循环内构建自

  • 问题内容: 我试图计算表中的行数,并认为这是执行此操作的正确方法: 但是计数总是返回。如果我在phpMyAdmin中使用相同的查询,则会得到正确的结果。它位于表格中,因此我也尝试进行测试,但是返回了。 什么是正确的方法? 问题答案: 您必须获取一条记录,它将包含Count()的结果

  • 我有一个像这样的mysql表 但是我无法用这个函数检索“成人”和“儿童”的值 错误日志显示变量被正确地传递给函数: 为什么此函数返回?

  • 在我的MySQL数据库中,我有一个表"table1",在列"name"上设置了唯一约束-我想防止重复的名称。 如果表中已经有名字'John',则此代码: 应该抛出insertUnonnequeException()(我自己的异常)。相反,它抛出InsertException()。 查询的执行返回false,执行进入if()循环。另外$db- 我不知道为什么当发生唯一密钥约束冲突时,mysqli不返

  • 问题内容: 我想检索数据库中插入行的ID,但是我不知道该怎么做。 我尝试使用SQL子句返回,但不起作用。 插入一行后如何返回ID? 问题答案: 在上调用方法后,插入行的ID将位于属性中。只看它。

  • 我在Java中有一个与MySQL连接的多类项目,我可以与这个SQL数据库建立连接,但当我试图将它读入数组时,它得到的是废话,而不是所请求的信息。我做错了什么? 它在sql定义下面出现了一条弯曲的线条,说它们从来没有被读取过,但我就是不明白为什么会这样!它构建得很好,可以看到数据库中有行,但它返回以下内容: 显示“java2assignment3.dvd@5e0010bc”和“java2assign