提问者:小点点

mysqli_fetch_assoc仅返回一个结果,即使有更多的[重复]


当我在PHPMyAdmin中运行以下查询时,它返回了正确数量的结果。 然而,当我尝试在PHP中回显结果时,它只输出一个结果,即使有更多个结果。 如何修复此问题,以便显示每个结果?

$sql1 = "SELECT userFirstname FROM users WHERE userID IN (SELECT userID FROM note_editors WHERE noteID = (SELECT noteID FROM notes WHERE uniqueID = ?))";
$stmt1 = mysqli_stmt_init($conn);

if (!mysqli_stmt_prepare($stmt1, $sql1)) {
    header("Location:  note-premium.php?error=sql");
    exit();
}          
                    
else {
    mysqli_stmt_bind_param($stmt1, "s", $unique);
    mysqli_stmt_execute($stmt1);
    $result1 = mysqli_stmt_get_result($stmt1);
    while ($row1 = mysqli_fetch_assoc($result1)) {
        $names = $row1['userFirstname'];
    }
}
                
echo($names);

第二次尝试:我尝试创建一个数组。 但这只是输出单词array和错误消息“notection:array to string conversion”。 为什么?

$sql1 = "SELECT userFirstname FROM users WHERE userID IN (SELECT userID FROM note_editors WHERE noteID = (SELECT noteID FROM notes WHERE uniqueID = ?))";
$stmt1 = mysqli_stmt_init($conn);

if (!mysqli_stmt_prepare($stmt1, $sql1)) {
    header("Location:  note-premium.php?error=sql");
    exit();
}          

else {
    mysqli_stmt_bind_param($stmt1, "s", $unique);
    mysqli_stmt_execute($stmt1);
    $result1 = mysqli_stmt_get_result($stmt1);
    $column = array();
    while ($row1 = mysqli_fetch_assoc($result1)) {
        $column[] = $row1['userFirstname'];
    }
}

echo($column);

共1个答案

匿名用户

当您循环遍历结果并将'user firstname'列的值存储在$names中时,您将覆盖存储在其中的前一个值。

您有两种选择--在遍历结果时显示该值,或者将该值存储在数组中,然后在之后显示该值。

选项1-在遍历结果时显示值:

while ($row1 = mysqli_fetch_assoc($result1)) {
   echo $row1['userFirstname'];
}

选项2-将值存储在数组中,并在循环后显示

$names = [];
while ($row1 = mysqli_fetch_assoc($result1)) {
   $names[] = $row1['userFirstname'];
}

foreach($names as $name) {
   echo '<p>'.$name.'</p>';
}

显然,您可以自定义如何循环数组值并显示它们。 我已将每个值包装在

标记中,以便它们显示在新行中。 如果只想显示数组的未格式化内容,请使用print_r($names)