Mysql 如何以手动指定的顺序检索项目
我有一个PHP中的id列表。例如:Mysql 如何以手动指定的顺序检索项目,mysql,Mysql,我有一个PHP中的id列表。例如: $id = (4,6,3,2,5,1) 当我执行这样的查询时: $query = mysql_query("SELECT * FROM table WHERE ID IN ($id)"); 它检索我想要的结果,但项目按插入顺序返回 相反,我希望按照数组中给定的顺序检索结果: information 4, information 6, information 3, information 2, information 5, information 1 我
$id = (4,6,3,2,5,1)
当我执行这样的查询时:
$query = mysql_query("SELECT * FROM table WHERE ID IN ($id)");
它检索我想要的结果,但项目按插入顺序返回
相反,我希望按照数组中给定的顺序检索结果:
information 4, information 6, information 3, information 2, information 5, information 1
我该怎么做
谢谢大家!解决方案是按字段排序(ID,$ID)
您的代码易受注入攻击。您应该对PDO或mysqli使用适当的参数化查询
$query="SELECT * FROM table WHERE ID IN ($id) ORDER BY FIND_IN_SET(ID,$id) DESC";
您的代码易受注入攻击。您应该对PDO或mysqli使用适当的参数化查询
$query="SELECT * FROM table WHERE ID IN ($id) ORDER BY FIND_IN_SET(ID,$id) DESC";
也检查一下这个
也检查一下这个
试试这个
$query = "SELECT * FROM table WHERE ID IN ($id) ORDER BY FIELD(ID,$id) ";
你可以看到这个试试这个
$query = "SELECT * FROM table WHERE ID IN ($id) ORDER BY FIELD(ID,$id) ";
你可以看到这个你可以在上面使用
字段
SELECT *
FROM table
WHERE ID IN (4,6,3,2,5,1)
ORDER BY FIELD(ID, 4,6,3,2,5,1)
字段
SELECT *
FROM table
WHERE ID IN (4,6,3,2,5,1)
ORDER BY FIELD(ID, 4,6,3,2,5,1)