MYSQL命令通过如何使用其他名称作为列?
这是我的PHP文件的片段,该数据库是库MySQLi:MYSQL命令通过如何使用其他名称作为列?
$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
但这看起来不太好。
如何使用date DESC的其他名称,例如'newest'?
mysite.com/index.php?order=newest
预先感谢您!
此致敬礼。
查询字符串需要包含在""
中。
您提供的代码段是否工作?有些事情要检查,如果它不:
1)确保您的$connect
信息是正确的。
2)确保table
是您的表的名称。
3)确保activ
是您的表中的一列。存储在那里的值是布尔型数据类型。
4)确保date
是您的表格中的一列,并且您使用的日期类型已正确存储在表格中。
5)注意LIMIT
期待的多项记录参数返回一些偏移,根据您使用LIMIT
不当使用的是$start
和$end
,我假设变量名。更合适的是$number_of_records
和$offset
。
6)检查错误日志以查看数据库服务器或域服务器本身是否记录了错误。
现在,如果该查询工作...
马特·克拉克处理问题的其余约ASC
和DESC
下面,见here。但显然,您不能仅仅粘贴ASC
或DESC
,而没有指定要排序的键,例如列date
。因此,查询字符串应该是这样的:
"SELECT * FROM table WHERE activ = '1' ORDER BY date $order LIMIT $start, $end"
另一种选择,如果你的查询变得更加复杂,并且不仅关系到按日期排序,那么你可能会采取提供多个变量与您的网址。
mysite.com/index.php?sortby=date &为了=最新
"SELECT * FROM table WHERE activ = '1' ORDER BY $sortby $order LIMIT $start, $end"
您可以了解更多关于这个帖子的网址多个变量:Passing multiple variables to another page in url和其他类似。
@Matt Clark Ha。看起来我迟到了,很好的答案Mark Clark。 –
$order = $_GET["order"];
if ($order == "newest")
{
$order = "DESC";
}
else
{
$order = "ASC";
}
这将重新分配取决于它的初始值的顺序值。
这也会给你一个默认值ASC对于任何排序顺序,不完全匹配newest
。
请注意,如果您最终做了其他事情,您的发布代码非常容易出现SQL注入; you should be sure to sanitize all your strings。
嘿,谢谢它的作品:)。这也可以以不同的方式完成吗?是的,我确定我会为所有的字符串使用mysqli真正的转义字符串。 –
查看给出的答案[here](http://stackoverflow.com/a/60496/1790644)。 –
一定要upvote和接受,如果我已经帮助:)干杯,并快乐的编码。 –
我觉得这里有让你的数据库的信息, 的两种方式,但我不得不澄清你的一些参数:
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”);
正如您所获得的信息以上。我假设你正在收到订单日期。所以,如果条件真的在日期中,你的查询应该看起来像这样。注意:如果日期或日期或内容是日期或日期,我会写日期小写,以便在日期列名中注意。 $ query = mysqli_query($ connect,“select * from table where activ ='1'order by date $ order limit $ start”);
我只是想帮忙。对不起,不要阻止我。
请提供你发布这些命令的环境是什么,这个PHP是什么?另外,提供有关$ start和$ end变量的信息。 –
嘿,是的,它的PHP和MYSQLi,$ start和$ end只是我的页面导航 –