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

使用PhP和MySQL对列进行排序的最佳方法是什么?

使用PhP和MySQL对列进行排序的最佳方法是什么?,php,mysql,sorting,Php,Mysql,Sorting,我想知道使用PHP和MySQL对表列进行排序的最佳方法是什么。有没有一种方法可以做到这一点而不必设置如下的变量 $strASC = $_GET["order"]; if ($strASC == "ASC") { $strASC = "DESC"; } 或者是否存在根据当前状态反转ASC或DESC的SQL查询 仅使用PHP和数据库,我认为没有更好的方法可以做到这一点 但是,如果您想尝试使用javascript而不运行另一个查询,您可以查看jquery和。仅使用PHP和数据库,我认为没

我想知道使用PHP和MySQL对表列进行排序的最佳方法是什么。有没有一种方法可以做到这一点而不必设置如下的变量

$strASC = $_GET["order"];

if ($strASC == "ASC") 
{
    $strASC = "DESC";
}

或者是否存在根据当前状态反转ASC或DESC的SQL查询

仅使用PHP和数据库,我认为没有更好的方法可以做到这一点


但是,如果您想尝试使用javascript而不运行另一个查询,您可以查看jquery和。

仅使用PHP和数据库,我认为没有更好的方法可以做到这一点


但是,如果您想尝试使用javascript而不运行另一个查询,您可以查看jquery和。

没有mysql不会自动执行。 但是你可以减少它

$strASC = $_GET['order']=='ASC'?'DESC':'ASC';

不,mysql不会自动完成。 但是你可以减少它

$strASC = $_GET['order']=='ASC'?'DESC':'ASC';

当您从数据库中获取结果集时,它是按照您指定的顺序进行的。数据库不会对其表中的数据重新排序,因此不知道当前处于哪个“状态”


在您的示例中还要注意SQL注入。

当您从数据库中获得结果集时,它是按照您指定的顺序进行的。数据库不会对其表中的数据重新排序,因此不知道当前处于哪个“状态”


在您的示例中还要注意SQL注入。

没有专门用于翻转排序顺序的函数,但您可以执行以下操作:

$sortDir = $_GET['order'] == 'ASC' ? 'DESC' : 'ASC';
mysql_query('SELECT * FROM table ORDER BY col ' . $sortDir);

没有专门用于翻转排序顺序的功能,但您可以执行以下操作:

$sortDir = $_GET['order'] == 'ASC' ? 'DESC' : 'ASC';
mysql_query('SELECT * FROM table ORDER BY col ' . $sortDir);

代码中有一个$GET,因此我假设您希望使用url参数来设置查询的顺序方向

您的代码看起来有点混乱,您将$strASC设置为“DESC”,这有点矛盾;)

像这样的事情怎么样:

$sortDirection = $_GET['order'];

if ($sortDirection == 'ASC' || $sortDirection == 'DESC')
{
    $sql = "SELECT mystuff FROM mytable WHERE mycrit ORDER BY " . $sortDirection;
}
else
{
    echo 'Invalid sort direction';
}

代码中有一个$GET,因此我假设您希望使用url参数来设置查询的顺序方向

您的代码看起来有点混乱,您将$strASC设置为“DESC”,这有点矛盾;)

像这样的事情怎么样:

$sortDirection = $_GET['order'];

if ($sortDirection == 'ASC' || $sortDirection == 'DESC')
{
    $sql = "SELECT mystuff FROM mytable WHERE mycrit ORDER BY " . $sortDirection;
}
else
{
    echo 'Invalid sort direction';
}


$sortDir在我看来似乎是一个不好的变量名,因为Dir最常用于Directory。我称之为$sortDirection,这使代码更具可读性!哦,求你了。什么时候会有一个被称为“排序”目录的目录?此外,请在上下文中查看变量。如果
$sortDir
mysql\u query
调用高出一行,我会说这是非常可读/可以理解的。我同意tharkun的观点-快速扫描该部分代码可能会让你认为你在谈论目录排序。另外,“DESC”和“ASC”不应该在三元语句的后半部分交换吗?变量命名BS非常离题,它只是一个代码示例,编写速度很快…$sortDir在IMO中似乎是一个不好的变量名,因为Dir最常用于目录。我称之为$sortDirection,这使代码更具可读性!哦,求你了。什么时候会有一个被称为“排序”目录的目录?此外,请在上下文中查看变量。如果
$sortDir
mysql\u query
调用高出一行,我会说这是非常可读/可以理解的。我同意tharkun的观点-快速扫描该部分代码可能会让你认为你在谈论目录排序。另外,“DESC”和“ASC”不应该在三元语句的后半部分交换吗?命名BS的变量非常离题,它只是一个代码示例,写得很快……这不是一个真正可读的符号。如果你想使用它,至少写下它($\u GET['order']=='ASC)''DESC':'ASC';如果你看不懂这个简单的语句,你就做错事了,在这种情况下,父母只会使代码更加混乱,这并不是一个真正可读的符号。如果你想使用它,至少写下它($\u GET['order']=='ASC)''DESC':'ASC';如果你看不懂这条简单的语句,你就做错事了,在这种情况下,父项只会使代码更加混乱,你如何避免像这样的注入呢?使用:$strADC=mysql\u real\u Escape\u string($\u GET[“order”])来转义查询字符串的内容如何避免对这样的内容进行注入?使用:$strADC=mysql\u real\u Escape\u string($\u GET[“order”])对查询字符串的内容进行转义