MYSQL order by 如何为列使用其他名称?
MYSQL order by how to use other name for column?
这是我的PHP文件的一段,数据库是MySQLi:
$order = $_GET["order"];
mysqli_query($connect,"SELECT * FROM table WHERE activ = '1' ORDER BY $order LIMIT $start, $end);
现在,如果我想按最新排序,我的 url 将如下所示:
mysite.com/index.php?order=date DESC
但这看起来不太好。
如何为日期 DESC 使用其他名称,例如 'newest'?
mysite.com/index.php?order=newest
提前致谢!!
此致。
$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) 确保您的 $connect
信息正确无误。
2) 确保 table
是您的 table.
的名称
3) 确保 activ
是您的 table 中的一列。并且存储在那里的值是布尔数据类型。
4) 确保 date
是您的 table 中的一列,并且您使用的日期类型正确存储在 table.
中
5) 请注意,根据您使用的变量名称,LIMIT
需要从某个偏移量 到 return 的 条记录的参数$start
和 $end
,我假设您使用的 LIMIT
不正确。 $number_of_records
和 $offset
.
更合适
6) 检查错误日志以查看数据库服务器或域服务器本身是否记录了错误。
现在,如果该查询有效...
Matt Clark 处理了下面关于 ASC
和 DESC
的其余问题,请参阅 。但很明显,您不能只使用 ASC
或 DESC
而不指定要排序的键,例如 date
列。所以查询字符串看起来像这样:
"SELECT * FROM table WHERE activ = '1' ORDER BY date $order LIMIT $start, $end"
另一种选择,如果您的查询变得更加复杂并且不仅与按日期排序有关,那么您可能会求助于为您的 URL.
提供多个变量
mysite.com/index.php?sortby=date&order=newest
"SELECT * FROM table WHERE activ = '1' ORDER BY $sortby $order LIMIT $start, $end"
您可以从这个 post 中了解有关 URL 中的多个变量的更多信息:Passing multiple variables to another page in url 和其他类似的内容。
我认为这里有两种获取数据库信息的方法,
但我必须澄清你的一些论点:
1).您从 $_GET['order']
获得的值必须是 asc
或 desc
.
2).是您的查询有误,您的订单后必须有一个列名。
它应该看起来像这样 order by column_name $order
.
3).您是否可能将 activ
拼错为 active
。不管怎样,我在下面的查询中关注你的专栏名称。
4).我不明白 $end
.
的目的是什么
5).
不管怎样,这里有一个在您的数据库中获取信息的简单方法。
如果每次用户都必须 insert/add 一些数据到 table,你可以简单地按 ID 排序。
$query = mysqli_query($connnect, "select * from table where activ = '1' order by id $order limit by $start");
如上所示。我假设您收到了订单日期。所以,如果条件真的在于日期,您的查询应该完全像这样。注意:我写的日期是小写的,所以请注意你的日期列名称是 DATE 还是 Date 或 date 还是什么。
$query = mysqli_query($connect, "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 将如下所示:
mysite.com/index.php?order=date DESC
但这看起来不太好。
如何为日期 DESC 使用其他名称,例如 'newest'?
mysite.com/index.php?order=newest
提前致谢!!
此致。
$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) 确保您的 $connect
信息正确无误。
2) 确保 table
是您的 table.
3) 确保 activ
是您的 table 中的一列。并且存储在那里的值是布尔数据类型。
4) 确保 date
是您的 table 中的一列,并且您使用的日期类型正确存储在 table.
5) 请注意,根据您使用的变量名称,LIMIT
需要从某个偏移量 到 return 的 条记录的参数$start
和 $end
,我假设您使用的 LIMIT
不正确。 $number_of_records
和 $offset
.
6) 检查错误日志以查看数据库服务器或域服务器本身是否记录了错误。
现在,如果该查询有效...
Matt Clark 处理了下面关于 ASC
和 DESC
的其余问题,请参阅 ASC
或 DESC
而不指定要排序的键,例如 date
列。所以查询字符串看起来像这样:
"SELECT * FROM table WHERE activ = '1' ORDER BY date $order LIMIT $start, $end"
另一种选择,如果您的查询变得更加复杂并且不仅与按日期排序有关,那么您可能会求助于为您的 URL.
提供多个变量mysite.com/index.php?sortby=date&order=newest
"SELECT * FROM table WHERE activ = '1' ORDER BY $sortby $order LIMIT $start, $end"
您可以从这个 post 中了解有关 URL 中的多个变量的更多信息:Passing multiple variables to another page in url 和其他类似的内容。
我认为这里有两种获取数据库信息的方法, 但我必须澄清你的一些论点:
1).您从 $_GET['order']
获得的值必须是 asc
或 desc
.
2).是您的查询有误,您的订单后必须有一个列名。
它应该看起来像这样 order by column_name $order
.
3).您是否可能将 activ
拼错为 active
。不管怎样,我在下面的查询中关注你的专栏名称。
4).我不明白 $end
.
5). 不管怎样,这里有一个在您的数据库中获取信息的简单方法。
如果每次用户都必须 insert/add 一些数据到 table,你可以简单地按 ID 排序。
$query = mysqli_query($connnect, "select * from table where activ = '1' order by id $order limit by $start");
如上所示。我假设您收到了订单日期。所以,如果条件真的在于日期,您的查询应该完全像这样。注意:我写的日期是小写的,所以请注意你的日期列名称是 DATE 还是 Date 或 date 还是什么。
$query = mysqli_query($connect, "select * from table where activ = '1' order by date $order limit $start");
我只是想帮忙。抱歉别喷我。