2012-04-09 15 views
0

私は自分のフォーラムを開発しています。私はORDER BY date_timeを試してみると完全に離れています。私のテーブル名は正しいので、すべてのフィールド名も同じです! ORDER BY date_timeをクエリに追加するとPHPエラーが発生し、サイトのどこか別の場所で問題なく動作するため、理由を理解できません。コードとエラーは以下の通りです:PHPとMySQL ORDER BY date_timeエラー

// query responses 
$sqlresponses = mysql_query("SELECT * FROM forum_replb ORDER BY date_time WHERE post_id='$disc_id'"); 
$responseList = ""; 
$numRows = mysql_num_rows($sqlresponses); 
if ($numRows < 1) { 
    $responseList = "There are currently no responses to this discussion/post yet! Add one above."; 
} else { 
    while($row = mysql_fetch_array($sqlresponses)){ 
     $response_author_id = $row["author_id"]; 
     $reply_body = $row["reply_body"]; 
     $date_time = $row["date_time"]; 
      $date_time = strftime("%b %d, %Y", strtotime($date_time)); 
     $responseList .= '<div id="sub_response_module"><p>' . $reply_body . ' - 
     <a href="../profile.php?id=' . $response_author_id . '">' . $response_author_id . '</a> 
     | <i>' . $date_time . '</i></p></div>'; 
    } 
} 

エラー:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/public_html/lb/forum/post.php on line 49 

ちょうど明確にするために、ライン49は$ numRowsの数の=のはmysql_num_rows($ sqlresponses);.

+0

['mysql_error'](http://php.net/manual/en/function.mysql-error.php)を使用して実際のエラーメッセージを取得してください。クエリが失敗した場合、mysql_queryは 'resource'の代わりに' false'を返します。ここで問題となるのは、このケースを無視して、とにかく$ sqlresoonseにmysql_num_rowsを呼び出すことです。例については、マニュアルを参照してください。 – Basti

答えて

3

ご注文WHERE句の後にする必要があります:

SELECT * FROM forum_replb WHERE post_id='$disc_id' ORDER BY date_time 

も機能のmysql_ファミリーは推奨されていることに注意してください。 mysqli_関数を使うか、より良いPDOを使うべきです。

2

クエリに構文エラーがあります.OURDER BYをWHEREの後に置く必要があります。 BY句

mysql_query("SELECT * FROM forum_replb WHERE post_id='$disc_id' ORDER BY date_time "); 
+0

どちらも正しいですが、構文エラーがあります。私はよく目を覚ます!みんなありがとう! – James