php mysql select下拉列表已选择且不同的查询
我在这里感到困惑php mysql select下拉列表已选择且不同的查询,php,mysql,Php,Mysql,我在这里感到困惑 $sql_n = mysql_query("SELECT * FROM table1 WHERE n='{$row['n']}'"); $row_n = mysql_fetch_array($sql_n); $sql= mysql_query("SELECT DISTINCT p FROM table1"); while($row = mysql_fetch_array($sql)) { if($row['p'] == $row_n['p']) {
$sql_n = mysql_query("SELECT * FROM table1 WHERE n='{$row['n']}'");
$row_n = mysql_fetch_array($sql_n);
$sql= mysql_query("SELECT DISTINCT p FROM table1");
while($row = mysql_fetch_array($sql)) {
if($row['p'] == $row_n['p']) {
$selected = " selected";
}
$np .= "<option value='{$row['p']}'$selected>{$row['p']}</option>";
}
当我使用queryselectdistinct p时,$selected不起作用,但是如果我使用selectp。它可以工作,知道为什么吗?不使用PHP,但是知道引擎有时会如何组成列名如果你没有明确暗示as列名,它可能会使用不同的 选择DISTINCT p作为DISTINCT\u p 因此,结果查询中的列名p不存在 你可能想试试 选择不同的p
因此,隐含的结果列名是p,并限定例程的其余部分。我的第一反应是,解决问题的方法是在第一个查询中也添加DISTINCT 我认为这是一个问题,现在我不认为是这个问题。。。但是,您的$selected变量。直到实际的
if($row['p'] == $row_n['p']) {
$selected = " selected";
}
您可能需要将此项设置为其他项并进行设置
$selected=
因此,它不会是一个不存在的变量,当您在构建选项列表时试图在下面的字符串构建中包含它时,它会失败。第一个查询中的$row['n']来自何处?这是另一个while循环的一部分吗?如果是这样,您将覆盖$row变量。$selected除了查询问题外将无法正常工作。一旦有1个匹配项,以下所有项都将标记为选中。另外,$selected should be selected='selected'尝试打印一行,查看从数据库中获得的每一行中都有什么内容。我测试过,所有变量都是正确的,只有在添加DISTINCT时才会发生。