php mysql_获取_数组查询帮助

php mysql_获取_数组查询帮助,php,mysql,Php,Mysql,您好,我正在尝试处理下面的mysql\u fetch\u数组查询,并简化代码,以便两个集合只运行一个查询,这可能吗 <select name=[set1]> <?php $set1 = mysql_fetch_array(mysql_query("SELECT `Locale` FROM `language` WHERE `Setting` = '1' ORDER BY FormatSet")); while($row = $set1){ echo "<o

您好,我正在尝试处理下面的mysql\u fetch\u数组查询,并简化代码,以便两个集合只运行一个查询,这可能吗

<select name=[set1]>    
<?php
$set1 = mysql_fetch_array(mysql_query("SELECT `Locale` FROM `language` WHERE `Setting` = '1' ORDER BY FormatSet"));
while($row = $set1){
    echo "<option value=\"$set1\">$set1</option>\n";
}
?>
                </select>
                <select name=[set2]>    
<?php
$set2 = mysql_fetch_array(mysql_query("SELECT `Locale` FROM `language` WHERE `Setting` = '2' ORDER BY FormatSet"));
while($row = $set2){
    echo "<option value=\"$set2\">$set2</option>\n";
}
?>
</select>


如果我理解您的问题,您希望同时执行两个查询和一半代码

我建议更改您的查询以一次性获取所有记录,并使用标志为每个新设置创建一个新的select,这应该可以工作,并且可以轻松添加更多设置:

$set = mysql_fetch_assoc(mysql_query("SELECT `Locale` FROM `language` WHERE `Setting` = '1' OR 'Setting' = '2' ORDER BY Setting, FormatSet"));

$setting = 0;
$close = false;

foreach ($set as $row)
{
    if ($row['Setting'] > $setting)
    {
        $setting = $row['Setting'];
        echo "<select name=[set{$setting}]>";
        // Set flag to close select
        $close = true;
    }

    echo "<option value=\"{$row['Locale']}\">{$row['Locale']}</option>\n";

    if ($close)
    {
        echo '</select>';
        $close = false;
    }
}
$set=mysql\u fetch\u assoc(mysql\u查询(“从'language'中选择'Locale',其中'Setting'='1'或'Setting'='2'按设置排序,FormatSet”);
$setting=0;
$close=false;
foreach($设置为$行)
{
如果($row['Setting']>$Setting)
{
$setting=$row['setting'];
回声“;
//设置关闭选择的标志
$close=true;
}
回显“{$row['Locale']}\n”;
若有($close)
{
回声';
$close=false;
}
}

该代码甚至不应该运行。while循环将永远运行..条件应为:
while($row=mysq\u fetch\u array($set))
whith
$set=mysql\u query(…
。我忘了提到两个零件下拉框都必须显示。上面可以允许吗?我还不能测试,但我注意到条件语句是的,它们都会显示。条件是将每个结果放入相应的select中。最后有两条回显线。
<?php 
$textSet1 = '<select name=[set1]>';
$textSet2 = '<select name=[set2]>';
$set = mysql_query("SELECT `Locale`, `Setting` FROM `language` WHERE `Setting` in ('1','2') ORDER BY FormatSet");
while($row = mysql_fetch_array($set)){
    if ($row['Setting'] == '1')
         $textSet1 .= '<option value="'.$row['Locale'].'">'.$row['Locale'].'</option>';
    else
         $textSet2 .= '<option value="'.$row['Locale'].'">'.$row['Locale'].'</option>';
}
$textSet1 .= '</select>';
$textSet2 .= '</select>';

echo $textSet1;
echo $textSet2;
?>