Php MYSQL排序按列如何使用其他名称?

Php MYSQL排序按列如何使用其他名称?,php,mysql,sql-order-by,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); 现在,如果我想按最新的排序,我的url将如下所示: "SELECT * FROM table WHERE activ = '1' ORDER BY date $order LIMIT $start,

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

$order = $_GET["order"];

mysqli_query($connect,"SELECT * FROM table WHERE activ = '1' ORDER BY $order LIMIT $start, $end);
现在,如果我想按最新的排序,我的url将如下所示:

"SELECT * FROM table WHERE activ = '1' ORDER BY date $order LIMIT $start, $end"
mysite.com/index.php?订单=日期描述

但这看起来不太好

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

mysite.com/index.php?订单=最新

提前谢谢你

致以最良好的祝愿

$order = $_GET["order"];
if ( $order == "newest" )
{
    $order = "DESC";
}
else
{
    $order = "ASC";
}
这将根据订单的初始值重新分配订单的值

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


请注意,如果您最终执行了其他操作,那么您发布的代码很容易被SQL注入

查询字符串需要包含在

您提供的代码段有效吗?如果没有,请检查一些事项:

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

2) 确保
table
是表的名称

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

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

5) 请注意,
LIMIT
期望从某个偏移量返回记录数的参数,基于您使用的变量名
$start
$end
,我假设您使用的
LIMIT
不正确。更合适的是
$number\u记录
$offset

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

现在如果该查询有效…

Matt Clark处理了下面关于
ASC
DESC
的其余问题,请参阅。但是很明显,如果不指定排序依据的键,例如列
date
,就不能只粘贴
ASC
DESC
。因此,查询字符串如下所示:

"SELECT * FROM table WHERE activ = '1' ORDER BY date $order LIMIT $start, $end"
另一种选择是,如果您的查询变得更加复杂,并且不仅与按日期排序有关,那么您可能会求助于为URL提供多个变量

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


您可以从本文和其他类似文章中了解更多关于URL中多个变量的信息。

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

1) 。从
$\u GET['order']
获取的值必须是
asc
desc

2) 。如果您的查询错误,则订单后面必须有一个列名。 它应该是这样的
按列排序\u name$order

3) 。您的
activ
可能被误认为
active
。不管怎样,我在下面的查询中跟踪您的列名

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

5) 。 无论如何,这里有一个简单的方法来获取数据库中的信息

  • 如果每次用户必须向表中插入/添加一些数据,您可以通过ID对其进行简单排序

    $query=mysqli_query($connnect,“从表中选择*,其中activ='1'按id排序$order limit by$start”)

  • 您可以从上面获得信息。我想你已经知道订单日期了。因此,如果条件真的存在于日期中,那么您的查询应该是这样的。注:我写的日期小写,所以请注意在您的日期列名称,如果它是日期或日期或日期或什么

    $query=mysqli_query($connect,“从表中选择*,其中activ='1'按日期排序$order limit$start”)


  • 我只是想帮忙。抱歉,不要解雇我。

    请提供您发出这些命令的环境,这是PHP吗?另外,请提供有关$start和$end变量的信息。嘿,是的,它的PHP和MYSQLi,$start和$end仅用于我的页面导航嘿,谢谢,它可以工作:)。这也可以用不同的方式来实现吗?是的,我肯定会对所有字符串使用mysqli real escape字符串。如果我提供了帮助,请确保向上投票并接受:)干杯,并愉快地编码。@Mark Clark,我放弃了投票,因为它回答了问题的另一部分。干得好。@Matt-Clark-Ha。看来我来晚了,回答得好马克·克拉克。