2016-02-13 69 views
0

这是我的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

预先感谢您!

此致敬礼。

+0

请提供你发布这些命令的环境是什么,这个PHP是什么?另外,提供有关$ start和$ end变量的信息。 –

+0

嘿,是的,它的PHP和MYSQLi,$ start和$ end只是我的页面导航 –

回答

-1

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

您提供的代码段是否工作?有些事情要检查,如果它不:

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

2)确保table是您的表的名称。

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

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

5)注意LIMIT期待的多项记录参数返回一些偏移,根据您使用LIMIT不当使用的是$start$end,我假设变量名。更合适的是$number_of_records$offset

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

现在,如果该查询工作...

马特·克拉克处理问题的其余约ASCDESC下面,见here。但显然,您不能仅仅粘贴ASCDESC,而没有指定要排序的键,例如列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和其他类似。

+0

@Matt Clark Ha。看起来我迟到了,很好的答案Mark Clark。 –

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

这将重新分配取决于它的初始值的顺序值。

这也会给你一个默认值ASC对于任何排序顺序,不完全匹配newest

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

+0

嘿,谢谢它的作品:)。这也可以以不同的方式完成吗?是的,我确定我会为所有的字符串使用mysqli真正的转义字符串。 –

+0

查看给出的答案[here](http://stackoverflow.com/a/60496/1790644)。 –

+0

一定要upvote和接受,如果我已经帮助:)干杯,并快乐的编码。 –

0

我觉得这里有让你的数据库的信息, 的两种方式,但我不得不澄清你的一些参数:

1)。您从$_GET['order']获得的价值必须是ascdesc。 2)。是你的查询是错误的,你的订单后必须有一个列名。 它应该看起来像这样order by column_name $order。 3)。你可能会拼错你的activactive。无论如何,我在下面的查询中追踪您的专栏名称。 4)。我不明白$end的目的是什么。 5)。 无论如何,这是获取数据库中信息的简单方法。

  1. 如果每次用户必须向表中插入/添加一些数据,您可以简单地按ID排序。 $ query = mysqli_query($ connnect,“select * from table where activ ='1'order by id $ order limit by $ start”);

  2. 正如您所获得的信息以上。我假设你正在收到订单日期。所以,如果条件真的在日期中,你的查询应该看起来像这样。注意:如果日期或日期或内容是日期或日期,我会写日期小写,以便在日期列名中注意。 $ query = mysqli_query($ connect,“select * from table where activ ='1'order by date $ order limit $ start”);

我只是想帮忙。对不起,不要阻止我。

相关问题