If you only want 3 rows, then yes, you should definitely add a LIMIT clause to your query so that the SQL server only has to worry about 3 rows.
I've moved this thread to the Database forum; you should read the sticky in this forum regarding the "ORDER BY RAND()" pitfall. In addition, you shouldn't use a "SELECT *" - instead, only select the columns that you actually need data from.
Finally, to retrieve three rows, just call [man]mysql_fetch_assoc/man three times in succession - it'll move through the result set after each time you call it.