Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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
Order By DESC/ASC在PHP查询中不起作用_Php_Mysql_Sql - Fatal编程技术网

Order By DESC/ASC在PHP查询中不起作用

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");

到目前为止,我有两个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");
数据显示的正是我想要的,但是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";