If that returns all results, then the query:
SELECT * FROM itemopt INNER JOIN options on options.itemoptid=itemopt.itemoption WHERE itemitemid = param
must return all results. Have you tested it in your mysql admin to see if your data is entered correctly. There doesn't appear to be a problem with this page.
You could add:
<?php echo($query_rsfoptions); ?>
This will tell you the exact query it is using. Why it returns so many results I guess could be a data integrity issue in the database.