Google decides what to show 1st based on how its algorithm matches the words that user is currently searching. So if pages www.example.com and www.example.com/index.php?a=1&b=2 show different contents (i.e. the 2nd one shows a 'product X') it might be that Google decided the 2nd one best fit a certain search (i.e. user searched exactly for the words 'product X'), thus it shows the 2nd page prior the home page www.example.com of your site. And there is nothing you could do about this.
But by reading the pages' names, I'm afraid the problem you are facing is that both pages www.example.com and www.example.com/index.php show the same contents. In such a case then you have simply screwed up your site/server settings, and Google gets confused.
You need to create a 301 redirect on your server to redirect page www.example.com/index.php to www.example.com and you should be fine (give to Goole the time to reprocess the all thing).
Later on in your site you could also totally replace any link towards www.example.com/index.php, with www.example.com.