2012-04-09 54 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'将返回'false'而不是'resource'。这里的问题是你忽略了这种情况,无论如何都要在$ sqlresoonse上调用'mysql_num_rows'。有关示例,请参阅手册。 – Basti 2012-04-09 10:10:32

回答

3

你的ORDER BY子句必须在WHERE子句后:

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

也请注意,功能mysql_家庭已被弃用。你应该使用mysqli_函数,或者可能更好的PDO。

2

你的查询语法错误 - 你应该把ORDER BY放在WHERE之后。

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

你是对的,我确实有语法错误。我最好醒来!多谢你们! – James 2012-04-09 10:11:19