MYSQL命令如何使用其他名称作为列?

时间:2016-02-13 01:45:48

标签: php mysql sql-order-by

这是我的PHP文件的一部分,数据库是MySQLi:

$order = $_GET["order"];

mysqli_query($connect,"SELECT * FROM table WHERE activ = '1' ORDER BY $order LIMIT $start, $end);

现在,如果我想按最新排序,我的网址将如下所示:

  

mysite.com/index.php?order=date DESC

但这看起来并不好。

如何为日期DESC使用其他名称,例如“最新”?

  

mysite.com/index.php?order=newest

提前谢谢!!

最好的问候。

3 个答案:

答案 0 :(得分:1)

$order = $_GET["order"];
if ( $order == "newest" )
{
    $order = "DESC";
}
else
{
    $order = "ASC";
}

这将根据其初始值重新分配 order 的值。

对于任何与newest完全不匹配的排序顺序,这也会为您提供默认值 ASC

请注意,如果您最终做了其他事情,那么您发布的代码很容易被SQL注入; you should be sure to sanitize all your strings

答案 1 :(得分:0)

我认为有两种获取数据库信息的方法, 但我必须澄清你的一些论点:

1)。您从$_GET['order']获得的值必须为ascdesc

2)。您的查询是错误的,订单后必须有一个列名。 它应该看起来像order by column_name $order

3)。您可能会被activ误导为active。无论如何,我在下面的查询中关注你的专栏名称。

4)。我不明白$end的目的是什么。

5)。 无论如何,这是一种在数据库中获取信息的简便方法。

  1. 如果每次用户必须在表格中插入/添加一些数据,您可以通过ID轻松订购。

    $ query = mysqli_query($ connnect,“select * from table where activ ='1'order by id $ order limit by $ start”);

  2. 如您获取上述信息。我假设你收到订单日期。因此,如果条件确实存在于日期中,那么您的查询应该完全如下所示。注意:我写了日期小写,所以请注意日期列名称,如果它是DATE或日期或日期或者是什么。

    $ query = mysqli_query($ connect,“select * from table where activ ='1'order by date $ order limit $ start”);

  3. 我只是想帮忙。对不起,不要激怒我。

答案 2 :(得分:-1)

查询字符串需要包含在""

您提供的代码段是否有效?有些事情需要检查:

1)确保您的$connect信息正确无误。

2)确保table是您桌子的名称。

3)确保activ是表格中的一列。存储在那里的值是布尔数据类型。

4)确保date是表格中的一列,并且您正在使用的日期类型已正确存储在表格中。

5)注意LIMIT期望记录的参数从某个偏移返回,基于您使用的变量名称$start和{{1我假设您错误地使用$end。更合适LIMIT$number_of_records

6)检查错误日志以查看数据库服务器或域服务器本身是否记录了错误。

现在,如果该查询有效......

Matt Clark 处理了下面$offsetASC的其余问题,请参阅here。但很明显,您无法指定DESCASC,而无需指定要排序的键,例如列DESC。所以查询字符串看起来像这样:

date

如果您的查询变得更复杂并且不仅与按日期排序有关,那么您可能会求助于使用您的网址提供多个变量。

  

mysite.com/index.php?sortby=date&order=newest

"SELECT * FROM table WHERE activ = '1' ORDER BY date $order LIMIT $start, $end"

您可以从以下帖子中了解有关网址中多个变量的详情:Passing multiple variables to another page in url和其他类似的人。