strange. i just did a test on a table with an INT(8) UNSIGNED ZEROFILL field.
$result = mysql_query('SELECT number FROM test') or exit(mysql_error());
while ($row = mysql_fetch_assoc($result)) {echo $row['number'] . '<br>';}
and the output was as expected:
00000001
00000002
00000003
00000004
00000005
00000006
00000007
etc...
my box:
WinXP
Apache 2.0.50
mySQL 4.1.10a
PHP 5.0.4