Php mysqli_fetch_assoc只返回一个结果,即使还有更多结果
当我在PHPMyAdmin中运行以下查询时,它返回了正确数量的结果。然而,当我尝试在PHP中回显结果时,它只输出一个结果,即使有更多的结果。如何解决此问题以显示每个结果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 = ?))"; $
$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>';
}