当我在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);
当您循环遍历结果并将'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)