根据ID显示所有字段

I am building a blog and trying to show all comments that apply to the post.

Each post has an ID and each comment is stored with the post ID.

here is my code:

<?php
 $con = mysql_connect("localhost","cl49-XXX-b","X");
if (!$con) 
  {
   die('Could not connect: ' . mysql_error());
   }  
mysql_select_db("cl49-XXX-b", $con)or die( "Unable to select database line 873");
$result=mysql_query("SELECT * FROM blogcomments WHERE ID='".$ID."'") or die('Error on Line 215 :'.mysql_error());

 echo " <ul class='comments'> "; // first row beginning
for ($i = 1; $i <= mysql_num_rows($result); $i++)
{
    $row = mysql_fetch_array($result);
    $name = $row['name'];
    $email = $row['email'];
    $comment = $row['comment'];
    $created=$row['created'];   

 echo"   <li>
                <div class='comment'>
                    <div class='thumbnail'>
                        <img class='avatar' alt='' src='img/avatar.jpg'>
                    </div>
                    <div class='comment-block'>
                        <div class='comment-arrow'></div>
                        <span class='comment-by'>
                            <strong>$name</strong>
                            <span class='pull-right'>
                                <span> <a href='#'><i class='icon-reply'></i> Reply</a></span>
                            </span>
                        </span>
                        <p>$comment</p>
                        <span class='date pull-right'>$created</span>
                    </div>
                </div>  ";

echo "   </li>"; // it's time no move to next row  
                }        

    ?>

When I run this code the page only shows one comment, although my DB has 3 comments with the correct ID.

I would consider using mysqli_ as mysql_ has been depreciated. I'd also consider using a while loop, hopefully this will help:

<?php
$DBServer = 'localhost';
$DBUser   = 'xxxx';
$DBPass   = 'xxxx';
$DBName   = 'xxxx';

$mysqli = new mysqli($DBServer, $DBUser, $DBPass, $DBName);

if ($mysqli->connect_errno) {
    echo "Failed to connect to the database: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$query = "SELECT * FROM blogcomments WHERE ID='". $ID ."'";

echo " <ul class='comments'> ";

if ($result = $mysqli->query($query)) {

    while ($row = $result->fetch_assoc()) {
?>

<li>
    <div class='comment'>
        <div class='thumbnail'>
            <img class='avatar' alt='' src='img/avatar.jpg'>
        </div>
        <div class='comment-block'>
            <div class='comment-arrow'></div>
                <span class='comment-by'>
                    <strong><?php echo $row['name']; ?></strong>
                    <span class='pull-right'>
                        <span><a href='#'><i class='icon-reply'></i> Reply</a></span>
                    </span>
                </span>
                <p><?php echo $row['comment']; ?></p>
                <span class='date pull-right'><?php echo $row['created']; ?></span>
            </div>
        </div>
    </div>
</li>

<?php

    } $result->close();
} $mysqli ->close();

echo "</ul>";


 ?>

I haven't tested this for bugs, but let me know if you like further information.

When you do this :

mysql_query("SELECT * FROM blogcomments WHERE ID='".$ID."'")

You select just one comment in the database. Maybe you have to do that :

mysql_query("SELECT * FROM blogcomments WHERE post_ID='".$post_ID."'")

Because you are selecting the row where ID field value is $ID in the table blogcomments.

I guess you store the referred post_id to whom the comment is connected in a field called something like "post_id". You better point your select query to that field ;)

If you put the structure of the table in the question, I might help :)

You're not closing your <ul>. Might it just be a HTML formatting issue?