这是我的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
提前谢谢!!
最好的问候。
答案 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']
获得的值必须为asc
或desc
。
2)。您的查询是错误的,订单后必须有一个列名。
它应该看起来像order by column_name $order
。
3)。您可能会被activ
误导为active
。无论如何,我在下面的查询中关注你的专栏名称。
4)。我不明白$end
的目的是什么。
5)。 无论如何,这是一种在数据库中获取信息的简便方法。
如果每次用户必须在表格中插入/添加一些数据,您可以通过ID轻松订购。
$ query = mysqli_query($ connnect,“select * from table where activ ='1'order by id $ order limit by $ start”);
如您获取上述信息。我假设你收到订单日期。因此,如果条件确实存在于日期中,那么您的查询应该完全如下所示。注意:我写了日期小写,所以请注意日期列名称,如果它是DATE或日期或日期或者是什么。
$ query = mysqli_query($ connect,“select * from table where activ ='1'order by date $ order limit $ start”);
我只是想帮忙。对不起,不要激怒我。
答案 2 :(得分:-1)
查询字符串需要包含在""
。
您提供的代码段是否有效?有些事情需要检查:
1)确保您的$connect
信息正确无误。
2)确保table
是您桌子的名称。
3)确保activ
是表格中的一列。存储在那里的值是布尔数据类型。
4)确保date
是表格中的一列,并且您正在使用的日期类型已正确存储在表格中。
5)注意LIMIT
期望记录的参数从某个偏移返回,基于您使用的变量名称$start
和{{1我假设您错误地使用$end
。更合适LIMIT
和$number_of_records
。
6)检查错误日志以查看数据库服务器或域服务器本身是否记录了错误。
现在,如果该查询有效......
Matt Clark 处理了下面$offset
和ASC
的其余问题,请参阅here。但很明显,您无法指定DESC
或ASC
,而无需指定要排序的键,例如列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和其他类似的人。