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']$order$_SESSION['order'] = $order

于 2012-09-11T07:10:23.123 に答える
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 に答える
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 に答える
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 に答える