Php mysqli_fetch_assoc只返回一个结果,即使还有更多结果

Php mysqli_fetch_assoc只返回一个结果,即使还有更多结果,php,mysql,Php,Mysql,当我在PHPMyAdmin中运行以下查询时,它返回了正确数量的结果。然而,当我尝试在PHP中回显结果时,它只输出一个结果,即使有更多的结果。如何解决此问题以显示每个结果 $sql1 = "SELECT userFirstname FROM users WHERE userID IN (SELECT userID FROM note_editors WHERE noteID = (SELECT noteID FROM notes WHERE uniqueID = ?))"; $

当我在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);
第二次尝试:我尝试创建一个数组。但这只是输出单词数组和错误消息,“注意:数组到字符串的转换”。为什么?


当您循环遍历结果并将“userFirstName”列的值存储在
$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>';
}
$names=[];
而($row1=mysqli\u fetch\u assoc($result1)){
$names[]=$row1['userFirstname'];
}
foreach($name作为$name){
回显“”.$name.“

”; }

显然,您可以自定义如何循环数组值并显示它们。我将每个值包装在一个
标记中,以便它们显示在新行上。如果您只想显示数组的未格式化内容,请使用
print\r($names)

每次覆盖
$names
-您需要建立一个值数组,而不是使用
mysqli\u fetch\u数组($result1)
@will\u kelly14非
echo($column)打印($column)
@will_kelly14您不知道它是什么意思
注意:数组到字符串的转换
。您需要停止手动检查错误。请阅读:为什么在一个地方使用
而在另一个地方使用
foreach
。你为什么前后矛盾?
$names = [];
while ($row1 = mysqli_fetch_assoc($result1)) {
   $names[] = $row1['userFirstname'];
}

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