2

IDでコメントを並べ替えたいだけですが、うまくいきません。これは私を混乱させているため、何をすべきかわかりません:articleid='" . mysql_real_escape_string($_GET['id']) . "'

DESC の ID でコメントを並べ替える方法を知っていますか? ありがとう!

<?php

$amount_get = mysql_query("SELECT * FROM comment WHERE articleid='" . mysql_real_escape_string($_GET['id']) . "'"); $comments = mysql_num_rows($amount_get);

$grab = mysql_query("SELECT * FROM comment WHERE articleid='" . mysql_real_escape_string($_GET['id']) . "'");


if (mysql_num_rows($grab)==0) {

    echo "<div class='alert alert-note-x'>Sorry, it looks like their are no comments to be displayed, check back later!</div>";
}

    while($row = mysql_fetch_array($grab)){

    ?>
4

7 に答える 7

8

まず、同じことをSELECT2 回繰り返します。行をカウントし、単一のクエリからデータを取得できるため、これはほとんど不要です。commentidこれに加えて、コメント テーブルの一意の ID に置き換えれば、設定は完了です。並べ替え順序を逆にするには、にDESC置き換えます。ASC

<?php
    $grab = mysql_query("SELECT * FROM comment WHERE articleid='" . mysql_real_escape_string($_GET['id']) . "' ORDER BY commentid DESC");
    $comments = mysql_num_rows($grab);

    if (mysql_num_rows($grab)==0) {
        echo "<div class='alert alert-note-x'>Sorry, it looks like their are no comments to be displayed, check back later!</div>";
    }

    while($row = mysql_fetch_array($grab)){

?>
于 2012-11-29T07:46:28.503 に答える
1

ORDER BY句を追加

$grab = mysql_query("SELECT * FROM comment WHERE articleid='" . mysql_real_escape_string($_GET['id']) . "' ORDER BY articleid, ID DESC");

あなたのクエリは で脆弱です。SQL Injection以下の記事を読んで保護してください。

于 2012-11-29T07:40:39.987 に答える
0

あなたのコメントテーブルには列があると思いますid

$grab = mysql_query("SELECT * FROM comment WHERE articleid='" . mysql_real_escape_string($_GET['id']) . "' ORDER BY id DESC");

これは、phpではなく、それをソートするためのSQLのものであるため、SQLステートメントを変更する必要があります。

于 2012-11-29T07:44:57.033 に答える
0
$amount_get = mysql_query("SELECT * FROM comment WHERE articleid='" . mysql_real_escape_string($_GET['id']) . "' ORDER BY id DESC "); 

$grab = mysql_query("SELECT * FROM comment WHERE articleid='" . mysql_real_escape_string($_GET['id']) . "' ORDER BY id DESC");
于 2012-11-29T07:45:23.303 に答える
0

3 つの提案:

1)文字列変数で「select」ステートメントを完成させます(以下に示すように、デバッグがはるかに簡単になります)

2)生の「選択」(または更新または削除!)の代わりに、準備されたステートメントの使用を検討してください。

パフォーマンスに役立ちます。しかし、それはあなたの PHPをより安全にします!

3) (非推奨の) mysql_query() 構文からの移行を検討する

<?php

  $sql = 
    "SELECT * FROM comment WHERE articleid='" . 
    mysql_real_escape_string($_GET['id']) . "' order by articleid desc";
  $amount_get = mysql_query($sql); 
  $comments = mysql_num_rows($amount_get);

  $sql = 
    "SELECT * FROM comment WHERE articleid='" . 
    mysql_real_escape_string($_GET['id']) . "'order by articleid desc";
  $grab = mysql_query($sql);
  ...

これは、古い mysql_query() 構文に取って代わる mySQLi および PDI API に関する適切なリンクです。

そして、ここに準備されたステートメントに関する良いリンクがあります:

于 2012-11-29T07:45:53.993 に答える
0

クエリで order by 句を使用できます

    <?php
$getarticles = array();
$getarticles = mysql_query("SELECT * FROM comment order by articleid desc");

if(empty($getarticles)){
echo "<div class='alert alert-note-x'>Sorry, it looks like their are no comments to be displayed, check back later!</div>";
}
echo "<pre>";
print_r($getarticles);
echo "</pre>";

    for($i=0;$i<count($getarticles);$i++){
//display
}

    ?>
于 2012-11-29T07:56:35.710 に答える
0

これを試して

$grab = mysql_query("SELECT * FROM comment WHERE articleid='" . mysql_real_escape_string($_GET['id']) . "' order by articleid desc");
于 2012-11-29T07:41:33.567 に答える