Order By DESC/ASC在PHP查询中不起作用
到目前为止,我有两个while循环内的代码:Order By DESC/ASC在PHP查询中不起作用,php,mysql,sql,Php,Mysql,Sql,到目前为止,我有两个while循环内的代码: mysql_query("SELECT * FROM listing WHERE (category_id='$category' OR category_id_2='$category' OR category_id_3='$category') AND listing_status='1' AND listing_type='1' AND listing_id='$listing_id' ORDER BY overall DESC");
mysql_query("SELECT * FROM listing WHERE
(category_id='$category' OR category_id_2='$category' OR category_id_3='$category')
AND listing_status='1' AND listing_type='1' AND listing_id='$listing_id'
ORDER BY overall DESC");
数据显示的正是我想要的,但是ORDER BY根本不起作用。我不太清楚它是按什么订购的。整个列本身是十进制的(12,2)
这些值仅保存到小数点后2位。例如,在每一行中,它可能是2.56,2.89。在本例中,我希望在2.56之前显示2.89。然而,事实并非如此
非常感谢。您是否尝试按顺序将字段转换为十进制
ORDER BY CAST(overall as DECIMAL) DESC
尝试:
我相信您在查询中一次只选择一个元素,比如
while(...){
$category = ...;
$listing_id = ...;
// Your query which only returns one result here
}
然后,由于查询只返回一个结果,因此没有需要排序的内容,您可以按照执行查询的顺序查看结果
如果希望
orderby
正常工作,则需要重写查询以一次性选择所有需要的行,而不是将其放入循环中。在查询中使用可能会对您有所帮助。查询没有问题。问题可能在于如何迭代返回的数据。试着改变它。
如果没有,请向我们提供全部相关的PHP代码。我已经设法解决了这个问题 通过在第一个循环表(而不是第二个循环表)中实现“总体”列。它首先对数据进行总体排序,然后继续从第二个表中收集其他数据
非常感谢您的帮助。我不知道为什么,但通过从phpmyadmin复制和粘贴,我发现这可以解决类似的问题。如果重要的话,'将改为'-不知道。但肯定是ASC采用了第二种方式 重要信息-已从第二个方法中删除了,请将它们放在表名和列名周围 而不是
$sql = "SELECT * FROM 'dczcats' ORDER BY 'first' , 'second' ASC";
我打了这个
$sql = "SELECT * FROM `dczcats` ORDER BY `dczcats`.`first` , `dczcats`.`second` ASC";
该查询是在循环中进行的,还是在查询后通过结果进行循环?能否显示一个输出示例,直接从mysql运行查询?另外,使用PDO/mysqli使用占位符也很好。当我希望2.82高于1.00时,输出示例为:1.00282。是的,此查询上方还有1个while循环,用于从另一个表中获取“listing_id”。这两个}是在上面2个数字的回音之后。你能添加一些样本数据,以及上面的代码对你的影响吗?我添加了样本数据,分别为1.00和2.82,它仍然使用回音“$total”输出2.82-im之前的1.00;在while循环之后。即使使用ASC或DESC也不会对数字的列出方式产生任何影响。我尝试了*、+、-、/和带/不带括号,仍然不会更改输出?太奇怪了。
总体*0
会是按0
排序。不是特别有用。ORDER BY CAST(整体*10为INT)DESC
我已经设法解决了这个问题。通过在第一个循环表(而不是第二个循环表)中实现“总体”列。它首先对数据进行总体排序,然后继续从第二个表中收集其他数据。非常感谢你的帮助。这就解释了这个神秘的虚拟错误。也许有人也应该告诉他关于清理用户输入的事情,因为我怀疑SQL注入是从角落里看出来的。
$sql = "SELECT * FROM `dczcats` ORDER BY `dczcats`.`first` , `dczcats`.`second` ASC";