OK a few things... first off, if by 'keywords' you mean <meta> tag keywords, you should konw that Google DOES NOT look at <meta> keywords tags. <meta> description maybe, but not keywords.
Is the problem that Google cannot find those keywords, or that those keywords simply arn't listed at all on your pages?
Google tends to prefer pages WITHOUT query strings, ie without ?PageID=1.
With a little help from Apache you can change those to look like directories, making this:
/filename.php?Pageid=1
Into this:
/filename.php/Pageid/1
Or even:
/filename/Pageid/1
Or possibly:
/filename/1
If the problem is just that you don't have unique <meta> description, title tags and stuff on each page, why not make a MySQL table of pages, each with their own description adn title?
PageID, meta_keywords, meta_descrip, title_tag
1, "custom caps, customized caps, custom hats", "Your One Stop Shop For Custom Hats!", "MyWebsite.com :: Custom Hats"
Then have your header file pull that info ( based on PageID variable ) from that table and fill in those keywords and description and title differently on each page?