显示具有相同第一个值的多个行

I am trying to view all the values of a certain field as long as the username='entered username'. My problem is that I can only do this in a while loop and print out the result within the while loop, so I can't use the results outside the while loop. Is there any other way to do this? Here is my current code.

    $query = mysql_query("SELECT * FROM databse WHERE username='$username'");
    $numrows = mysql_num_rows($query);

    while ($row = mysql_fetch_assoc($query)){

        $message= $row['message'];

        print_r ($message);

    }
    mysql_close();

You can do as below :

$query = mysql_query("SELECT * FROM databse WHERE username='$username'");
$numrows = mysql_num_rows($query);
$result = array();
while ($row = mysql_fetch_assoc($query)){
    $result[] = $row;
}
print_r ($result);
mysql_close();
  • Your query will return an error if $username contains a single quote (solution: escape it or use PDO)
  • Your query will have serious security problem if $username comes from a user input (solution again: escape it properly or, better, use PDO)

You can store your results in an array.

$messages = array();
while ($row = mysql_fetch_assoc($query)){
    $messages[] = $row['message'];
}
print_r($messages);

try this to print all 'message' results

$query = mysql_query("SELECT * FROM databse WHERE username='$username'");
$numrows = mysql_num_rows($query);
$datas = array();
while ($row = mysql_fetch_assoc($query)){
    $message= $row['message'];
    $datas[] = $message;
}
print_r ($datas);
mysql_close();