Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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_Select_Numbers_Sql Order By - Fatal编程技术网

Php Mysql按数字顺序描述

Php Mysql按数字顺序描述,php,mysql,select,numbers,sql-order-by,Php,Mysql,Select,Numbers,Sql Order By,我的PHP代码中有一个简单的mysql select查询: $result = mysql_query("SELECT text FROM example ORDER BY rank DESC"); while($row = mysql_fetch_array($result)) { echo $row['text'] . "<br>"; } 当我从查询中获得结果时,会显示如下内容: yahoo google bing 我希望谷歌能走在前面。我猜雅虎排在第一位,因为

我的PHP代码中有一个简单的mysql select查询:

$result = mysql_query("SELECT text FROM example ORDER BY rank DESC");
while($row = mysql_fetch_array($result))
  {
  echo $row['text'] . "<br>";
  }
当我从查询中获得结果时,会显示如下内容:

yahoo 
google
bing
我希望谷歌能走在前面。我猜雅虎排在第一位,因为它以“3”开头

如何使查询按排名中数字的大小对结果排序

谢谢…

试试这个:

$result = mysql_query("SELECT * FROM example ORDER BY rank DESC");
while($row = mysql_fetch_array($result))
{
  echo $row['text'] . "  ". $row['rank'] ."<br>";
}
$result=mysql\u查询(“按等级描述从示例顺序中选择*);
while($row=mysql\u fetch\u数组($result))
{
回显$row['text']。“.$row['rank']。”
”; }

查看列组的排序是否正确。

在SQL模式中,
rank
的数据类型是什么?将其设置为数字类型。

我猜
rank
字段是某种字符串类型。将其设置为数字类型
int
,它将正确排序

正确的解决方案当然是使用正确的数据类型。作为一种解决方法,您可以动态地将数据转换为数字:

SELECT text FROM example ORDER BY rank + 0 DESC
或:

$result=mysql\u查询(“按'rank`DESC'排序从'example`中选择*);
while($row=mysql\u fetch\u数组($result))
{
echo$row['text']。“
”; }
谢谢。。。我真傻。忘了这么做:P会接受答案:)没问题。不确定在切换列类型时,是否会在维护
rank
数据时遇到问题。如果你只有这3条记录,那就什么都不是了,但是如果你有很多记录,你可能想备份数据,如果数据出错,你可以运行一个脚本,转换所有的值,然后重新插入它们。
SELECT text FROM example ORDER BY rank + 0 DESC
SELECT text FROM example ORDER BY cast(rank as unsigned) DESC
$result = mysql_query("SELECT * FROM `example` ORDER BY `rank` DESC");

while($row = mysql_fetch_array($result))
{
  echo $row['text'] ."<br>";
}