Just do either a mysql_fetch_assoc(), mysql_fetch_array(), or mysql_fetch_row(), but not two of them in a row overwriting the same $row variable. (I normally use mysql_fetch_assoc().)
$result = mysql_query("select * from number where number='$num';") or die(mysql_error());
if(mysql_num_rows($result)) // might as well make sure we got something
{
$row = mysql_fetch_assoc($result);
echo $row['Number'];
}
else
{
echo "No rows returned";
}
If you really want to call the same result row with two different functions (maybe as a test?), then you need to "rewind" the result row pointer:
$row = mysql_fetch_assoc($result);
echo $row['Number'];
mysql_data_seek($result, 0); // rewind back to start
$row = mysql_fetch_row($result);
echo $row[1]
mysql_data_seek($result, 0); // rewind again
$row = mysql_fetch_array($result); // returns both assoc and numeric keys
echo $row['Number'];
echo $row[1];