Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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 SQL查询未正确排序结果_Php_Sql - Fatal编程技术网

Php SQL查询未正确排序结果

Php SQL查询未正确排序结果,php,sql,Php,Sql,我正在查询数据库以返回一组从最高到最低的结果。但是,似乎查询并没有完全按照这种方式对结果排序。我的代码如下: $query = mysql_query("SELECT * FROM ".$stats_table." ORDER BY ppg DESC")or die(mysql_error()); $count = mysql_num_rows($query); $i = 0; while($row = mysql_fetch_assoc($query)) { $team[$i] = $ro

我正在查询数据库以返回一组从最高到最低的结果。但是,似乎查询并没有完全按照这种方式对结果排序。我的代码如下:

$query = mysql_query("SELECT * FROM ".$stats_table." ORDER BY ppg DESC")or die(mysql_error());
$count = mysql_num_rows($query);
$i = 0;

while($row = mysql_fetch_assoc($query)) 
{
$team[$i] = $row['team'];
    $ppg[$i]  = $row['ppg'];

    $i++;
}

for($i=0;$i<$count;$i++)
{
echo "".$ppg[$i]." <br /><br />";
}
似乎对于所有小于100和大于100的值都有效。但是,我如何才能使这个顺序适用于所有值,而不是仅适用于小于或大于100的值

谢谢


Lance

制作
ppg
double,real或任何数字,而不是varchar。

如果您不想触动您的结构,请使用ORDER BY ABS(ppg)

将数据类型更改为数字,如double,real,float。试试看。

您可以让PHP对其进行排序

$query = mysql_query("SELECT * FROM ".$stats_table)or die(mysql_error());

$i = 0;
while($row = mysql_fetch_assoc($query)) {
    $team[$i] = $row['team'];
    $ppg[$i]  = (int)$row['ppg'];
    $i++;
}
sort($ppg, SORT_NUMERIC);
for($i=0;$i<count($ppg);$i++) {
     echo $ppg[$i]." <br /><br />";
}
$query=mysql\u query(“从“$stats\u表中选择*”)或die(mysql\u error());
$i=0;
while($row=mysql\u fetch\u assoc($query)){
$team[$i]=$row['team'];
$ppg[$i]=(int)$row['ppg'];
$i++;
}
排序($ppg,sort\u NUMERIC);

对于($i=0;$i您为ppg分配了哪些数据类型?注意!PHP的下一个主要版本是弃用
mysql\uww
函数族。现在是使用or.awww的好时机。这太糟糕了。我很难将其从varhcar切换到int。但是,现在的问题是,我不能在其中包含十进制值。请将您的数据类型更改为float这可能会有帮助。我也可以这样做。这比使用mysql_num_行快吗?使用count()来计算数组$ppg肯定比使用mysql_num_行的计数更聪明(更安全),因为数组$ppg可能有不同于mysql_num_行的项目数。
$query = mysql_query("SELECT * FROM ".$stats_table)or die(mysql_error());

$i = 0;
while($row = mysql_fetch_assoc($query)) {
    $team[$i] = $row['team'];
    $ppg[$i]  = (int)$row['ppg'];
    $i++;
}
sort($ppg, SORT_NUMERIC);
for($i=0;$i<count($ppg);$i++) {
     echo $ppg[$i]." <br /><br />";
}