我试图将数据库中的所有用户行作为表单中的选择进行回显。
它只显示一个空格。没别了。
这是我的代码。
<?php
session_start();
require('../../config.php');
$user = $_SESSION['user'];
$qry=("SELECT `rank`, `uname` FROM users WHERE `uname` = '$user'");
$result=mysql_query($qry);
$row = mysql_fetch_assoc($result);
$rank = $row['rank'];
$logged = $_SESSION['loggedin'];
if ($logged == true) {
if ($rank >= 3) {
echo "Succesful, $user.<br />
<form method='POST' action='delete.php'>
<select><option>Please select</option>";
while ($row = mysql_fetch_assoc($result)) {
$users = $row['uname'];
$lol = ucwords($users);
}
echo "<option>$lol</option>";
echo "</select>
</form>";
} else {
echo "Your not an admin. $user";
}
} else {
echo "Please login.";
}
?>
答案 0 :(得分:2)
首先,请停止使用mysql_
函数deprecated。查看mysqli_
或PDO
。请注意,您的脚本容易受到SQL注入的攻击。</ p>
您的脚本无法正常工作的原因是因为您似乎正在调用mysql_fetch_assoc
两次。第二次调用时,如果查询只返回一行,则不会有任何输出。
$qry=("SELECT `rank`, `uname` FROM users WHERE `uname` = '$user'");
$result=mysql_query($qry);
$row = mysql_fetch_assoc($result);
$rank = $row['rank'];
您需要重新提交查询(如下所示)并单独调用该结果以填充下拉列表,或将结果存储在数组中。
$qry=("SELECT `uname` FROM users");
$result=mysql_query($qry);
while ($row = mysql_fetch_assoc($result)) {
echo '<option>' . ucwords($row['uname']) . '</option>';
}
答案 1 :(得分:0)
看起来你的while循环设置很糟糕,我认为你需要改变
while ($row = mysql_fetch_assoc($result)) {
$users = $row['uname'];
$lol = ucwords($users);
}
echo "<option>$lol</option>";
到这个
while ($row = mysql_fetch_assoc($result)) {
$users = $row['uname'];
$lol = ucwords($users);
echo "<option>$lol</option>";
}
答案 2 :(得分:0)
更新: 我重新阅读了您的问题,似乎您想要显示表格中的所有名称。 原始查询是检查用户是否是管理员。
的副本<?php
session_start();
require('../../config.php');
$user = $_SESSION['user'];
$qry=("SELECT `rank`, `uname` FROM users WHERE `uname` = '$user'");
$result=mysql_query($qry);
$row = mysql_fetch_assoc($result);
$rank = $row['rank'];
$logged = $_SESSION['loggedin'];
if ($logged == true) {
if ($rank >= 3) {
echo "Succesful, $user.<br />
<form method='POST' action='delete.php'>
<select><option>Please select</option>";
// added these 2 lines
$qry=("SELECT `rank`, `uname` FROM users");
$result=mysql_query($qry);
while ($row = mysql_fetch_assoc($result)) {
$users = $row['uname'];
$lol = ucwords($users);
echo "<option>$lol</option>";
}
echo "</select>
</form>";
} else {
echo "Your not an admin. $user";
}
} else {
echo "Please login.";
}
?>
答案 3 :(得分:0)
您确定您的数据库有多行吗?你正在调用fetch 1次,所以它第二次尝试获取第二行。
还尝试将查询直接运行到mysql中,看看你是否得到了你期待的行,可能是它没有返回你的预期