我想知道哪些是使用PHP和MySQL对表列进行排序的最佳方法。有没有办法做到这一点,而不必设置像下面这样的变量?用PhP和MySQL对列进行排序的最佳方法是什么?
$strASC = $_GET["order"];
if ($strASC == "ASC")
{
$strASC = "DESC";
}
或确实存在一个SQL查询,根据当前状态反转ASC或DESC?
我想知道哪些是使用PHP和MySQL对表列进行排序的最佳方法。有没有办法做到这一点,而不必设置像下面这样的变量?用PhP和MySQL对列进行排序的最佳方法是什么?
$strASC = $_GET["order"];
if ($strASC == "ASC")
{
$strASC = "DESC";
}
或确实存在一个SQL查询,根据当前状态反转ASC或DESC?
。该数据库不会重新排列表中的数据,因此它不知道它当前处于哪个“状态”。
在您的示例中,还要注意SQL注入。
仅使用PHP和数据库,我认为没有更好的方法可以做到这一点。
但是,如果你想尝试使用JavaScript而不运行另一个查询,你可以看看jquery和tablesorter。
没有mysql不会自动执行它。 当你从一个数据库,它是在您指定的顺序的结果集U可以减少它虽然
$strASC = $_GET['order']=='ASC'?'DESC':'ASC';
这是不真的是一个非常可读的符号。如果你想使用它,至少写($ _GET ['order'] =='ASC)? 'DESC':'ASC'; – markus 2009-09-28 19:50:59
tharkun,这是分裂头发。它是完全可读的。 – brianreavis 2009-09-28 19:57:20
如果你不能阅读这个简单的陈述,你是错误的业务,在这种情况下,父母只会混乱更多的代码,imo – NDM 2009-09-28 20:23:30
有特别没有功能翻转的排序顺序,但你可以做这样的事情:
$sortDir = $_GET['order'] == 'ASC' ? 'DESC' : 'ASC';
mysql_query('SELECT * FROM table ORDER BY col ' . $sortDir);
$ sortDir似乎是一个坏的变量名称IMO,因为Dir最常用于Directory。我把它称为$ sortDirection,它使代码更具可读性! – markus 2009-09-28 19:48:41
哦,拜托。你什么时候有一个被称为“排序”目录的目录?另外,在上下文中查看变量。如果'$ sortDir'比mysql_query'调用更高一行,我会说这是很多可读/可理解的。 – brianreavis 2009-09-28 19:59:47
我同意tharkun - 对该代码段的快速扫描可能会让您认为您在讨论排序目录。 – Skilldrick 2009-09-28 20:11:51
您遇到在代码中的$ _GET,所以我假设你想使用网址参数设置查询的顺序方向。
你的代码看起来有点混乱,你设置$ 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';
}
感谢您指出注入 – 2009-09-28 20:18:14
你会如何避免注入这样的事情? – 2009-09-30 17:05:33
转义查询字符串的内容使用: $ strADC = mysql_real_escape_string($ _ GET [“order”]) – AdamW 2009-10-01 16:52:19