2012-04-09 4 views
0

Ich entwickle meine eigenen Foren und alles funktioniert perfekt getrennt von, wenn ich versuche, durch date_time ORDER BY. Mein Tabellenname ist korrekt und das gleiche gilt für alle Feldnamen! Ein PHP-Fehler tritt auf, wenn ich ORDER BY date_time zur Abfrage hinzufüge, und ich kann nicht verstehen, warum das funktioniert, da es an anderer Stelle auf der Site einwandfrei funktioniert. Der Code und die Fehler sind unten:PHP und MySQL ORDER BY date_time Fehler

// 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>'; 
    } 
} 

Fehler:

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

Nur um zu klären, Linie 49 $ numRows = mysql_num_rows ($ sqlresponses) ;.

+0

Verwenden Sie [mysql_error'] (http://php.net/manual/en/function.mysql-error.php), um eine tatsächliche Fehlermeldung zu erhalten. Wenn Ihre Abfrage fehlschlägt, wird mysql_query '' false' anstelle von 'resource' zurückgeben. Das Problem hier ist, dass Sie diesen Fall ignorieren und 'mysql_num_rows' auf $ sqlresoonse trotzdem aufrufen. Siehe das Handbuch für ein Beispiel. – Basti

Antwort

3

Ihre ORDER BY-Klausel muss nach der WHERE-Klausel sein:

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

Bitte beachten Sie auch, dass die mysql_ Familie von Funktionen sind veraltet. Sie sollten die mysqli_-Funktionen oder möglicherweise noch besser PDO verwenden.

2

Sie haben einen Syntaxfehler in Ihrer Abfrage - Sie sollten die ORDER BY nach dem WHERE setzen.

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

Sie haben beide Recht, ich habe einen Syntaxfehler. Ich wache besser auf! Danke Leute! – James