0

我有一个 MySQL 查询,我试图在单击链接时动态排序。

我的链接看起来像这样

                 <form action="topics.php" method="get" class="form">
                   <label class="label">Order Table By</label>
                    <li><a href="topics.php?sort=ID">ID</a></li>
                    <li><a href="topics.php?sort=Title">Title</a></li>
                    <li><a href="topics.php?sort=TAGS">Tags</a></li>
                    <li><a href="topics.php?sort=VIEWS">Views</a></li>
                 </form>

MySQL 查询如下所示:

<?php

        $order = mysql_real_escape_string($_GET['sort']);          
$topics = mysql_query("SELECT topic_id AS 'ID', topic_head AS 'Title', 
                              topic_tags AS 'TAGS', topic_views AS 'VIEWS',
                       FROM forum_topics 
                       WHERE topic_id > 0 ORDER BY '$order' DESC") or die (mysql_error());

当我单击上面的任何链接时,没有任何反应。没有显示错误,没有进行排序。问题可能出在哪里?谢谢

4

5 回答 5

1

在您创建 MySQL 查询之前,您是按$_SESSION['order']而不是按排序,$order...我建议您$_SESSION['order']$orderor替换。$_SESSION['order'] = $order

于 2012-09-11T07:10:23.123 回答
1
error_reporting(E_ALL);

将其添加到您的代码中。http://php.net/manual/en/function.error-reporting.php

如果您仔细查看您的代码,您会发现您正在使用$_SESSION[order]而不是$_SESSION['order'] 注意引号

真正的问题是:

在第 1 行您定义了$order,而不是$_SESSION['order']

我的建议是:获得一个合适的 IDE,像PhpStormNetbeans这样的合适的 IDE会突出你犯的很多错误,比如拼写错误和未使用的变量。当您无法记住变量时,它会变得很方便;)

于 2012-09-11T07:14:56.000 回答
1

试试这个:

<?php
  $sortParams = ('ID','Title','Tags','Views');
  $order = mysql_real_escape_string($_GET['sort']);
  if(!in_arrray($order,$sortParams))
  {
    $order = 'ID';//Assuming by default you sorting by ID
  }  
  $topics = mysql_query("SELECT topic_id AS 'ID', topic_head AS 'Title', 
        topic_tags AS 'TAGS', topic_views AS 'VIEWS',
        FROM forum_topics 
        WHERE topic_id > 0 ORDER BY $order DESC") or die (mysql_error());
于 2012-09-11T07:19:23.397 回答
0

$_SESSION[order]是除 之外的另一个变量$order。它们是不同的,所以你所做的不会订购任何东西,除非你$_SESSION[order]用变量替换你的$order或者它们共享相同的值。

于 2012-09-11T07:13:54.000 回答
0

问题是你有引号$order,所以它是按文字字符串排序的,而不是一列。将它们更改为反引号。

 WHERE topic_id > 0 ORDER BY `$order` DESC"
于 2012-09-11T07:27:34.330 回答