Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:从MySQL数据库中获取特定元素,显示在选择选项列表的顶部_Php_Mysql - Fatal编程技术网

PHP:从MySQL数据库中获取特定元素,显示在选择选项列表的顶部

PHP:从MySQL数据库中获取特定元素,显示在选择选项列表的顶部,php,mysql,Php,Mysql,我的网站上有一个选择菜单,显示所有可用的国家/地区。这些国家来自我的MySQL表,该表以随机顺序包含10个国家。我完全知道如何从表中检索所有国家,并使用PHP将它们输出到HTML选择菜单中 然而,我想知道当我想选择两个特定的国家出现在我的选项列表的顶部,而其他八个国家则在下面列出时,代码方面的哪种方法是最有效的?我希望尽可能少地使用sql和php来实现这个目标 假设我有下表“国家”: 我想输出一个选择菜单中的国家,我希望列表以丹麦和印度开始(其ID作为选项值) 我的目标是: <select

我的网站上有一个选择菜单,显示所有可用的国家/地区。这些国家来自我的MySQL表,该表以随机顺序包含10个国家。我完全知道如何从表中检索所有国家,并使用PHP将它们输出到HTML选择菜单中

然而,我想知道当我想选择两个特定的国家出现在我的选项列表的顶部,而其他八个国家则在下面列出时,代码方面的哪种方法是最有效的?我希望尽可能少地使用sql和php来实现这个目标

假设我有下表“国家”:

我想输出一个选择菜单中的国家,我希望列表以丹麦和印度开始(其ID作为选项值)

我的目标是:

<select>
   <option value="8">Denmark</option>
   <option value="5">India</option>
   // ... the other eight countries underneath, in no specific order
</select>
我需要如何继续才能最好地实现我的目标?

您可以使用该函数

或者使用
案例

SELECT id, name 
FROM countries
ORDER BY CASE WHEN name = 'Denmark' THEN 0
              WHEN name = 'India' THEN 1
              ELSE 2 END

如果您希望按字母顺序作为跟随者,也可以使用此语句

   SELECT id, name 
     FROM countries
     ORDER BY id=8 DESC, id=5 DESC, name ASC

几乎完美。在生成的数组中,“丹麦”和“印度”是最后的项。但我希望它们是第一个数组项。我怎么做到的?@Max我不明白你的意思。。。此查询返回一个数组Denemark、India、Australia、Brazil。。。等等
SELECT id, name 
FROM countries
ORDER BY FIELD(name,'India','Denmark') DESC
SELECT id, name 
FROM countries
ORDER BY CASE WHEN name = 'Denmark' THEN 0
              WHEN name = 'India' THEN 1
              ELSE 2 END
   SELECT id, name 
     FROM countries
     ORDER BY id=8 DESC, id=5 DESC, name ASC