This all sounds like an efficiency nightmare waiting to happen...
Let's see if I can offer some useful advice. What kinds of "suggestions" are you planning to do? Something like "green round widgets" could return the suggestion of "red round widgets"? Despite the "easiness" of knowing what you want to do, this is an incredibly complex algorithm to successfully pull off (as you're finding out).
What you could do is alter your query to:
$like = "%".trim(str_replace(' ','%',$_GET['q']))."%";
$query = "SELECT correct FROM spellcheck WHERE wrong LIKE '{$like}'";
This will put a query like "red green widgets" into the form "%red%green%widget%". This will provide a match to such entries as "blue red green widget", "red green round widget", etc. This might help you get closer to what you're looking for, while not becoming too complex.
You could also consider doing a regular expression check against the 'q' value from _GET so as to eliminate any non-alpha characters and space character. This can then disregard such issues as punctuation in a query (as well as helping to prevent potentially bad code from being injected into the DB).
You could test it out by having it output each result (because the above will output multiple results, since more than one entry in the DB might match). For example, if your "spellcheck" table has values in the "wrong" column such as:
"large elephant food"
"medium elephant food"
"small elephant food"
And your user searches "food"... it could return all 3 of the above records as matches to 'food' (for example). So you'll need to consider modifying your code to loop through the results array.
But this will return any possible match, and you seem to only want one match returned. You could run PHP's function
similar_text() on the results to check how similar the query is to the "correction"... and then only display/use the one that is
most similar.
You'll have a bit of work to do to make this very accurate/useful. :)
Note that this is a very simplistic approach.