在下拉列表中显示Mysqli结果



我有一个代码,当一个人登录时,它会自动显示与他们的帐户相关的某些信息。我正试图将此信息列在下拉列表中,每个结果都作为一个新选项。现在它正在发布结果,但都在同一行。

当前输出图像

此图显示查询当前如何输出结果。我需要将这些名称分别放在一行中,而不是作为同一个选项。

<?php
$results = mysqli_query($db, "SELECT u.Name AS Name, u.activation as activation, u.lastlogin AS lastlogin, u.dwForbidTime AS dwForbidTime, u.RegDate AS RegDate, u.email AS email, group_concat(distinct g.szName SEPARATOR '<br />') AS szName, g.byShape as byShape, g.Level as Level
FROM user AS u
LEFT JOIN gamedata AS g on u.name = g.szAccountName
WHERE Name='$user_check'
ORDER BY g.szAccountName DESC
LIMIT 3") or die("Error: " . mysqli_error($db));
echo "<select name='character'>";
while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
echo '<option value="' . $row['szName'] . '">' . $row['szName'] . '</option>';
}
echo "</select>";
?>

如果我不尝试使用下拉列表,但我需要为表单提供一个选择选项,则我的查询输出良好。

不要使用GROUP_CONCAT()。这就是将所有结果合并到一行中,每个名称之间有<br>while循环希望每个名称都在单独的结果行中。

$results = mysqli_query($db, "
SELECT distinct g.szName
FROM user AS u
LEFT JOIN gamedata AS g on u.name = g.szAccountName
WHERE Name='$user_check'
ORDER BY g.szAccountName DESC
LIMIT 3") or die("Error: " . mysqli_error($db));

如果您只在下拉菜单中显示szName,也不需要选择所有其他列。

我使用foreach来测试它,它运行得很好。

$row = array('test', 'test 1', 'test 2');
echo "<select name='character'>";
foreach ($row as $result) {
echo "<option value='$result'>$result</option>";
}
echo "</select>";

最新更新