I need to take a MySQL query and insert a string before each table name. The solution doesn’t need to be one line but obviously it’s a regex problem. It will be implemented in PHP so having programming logic is also fine.
Rationale and Background: I’m revamping my code base to allow for table prefixes (eg: ‘nx_users’ instead of ‘users’) and I’d like to have a function that will automate that for me so I don’t need to find every query and modify it manually.
Example:
SELECT * FROM users, teams WHERE users.team_id = teams.team_id ORDER BY users.last_name
Using the prefix ‘nx_’, it should change to
SELECT * FROM nx_users, nx_ teams WHERE nx_ users.team_id = nx_ teams.team_id ORDER BY nx_ users.last_name
Obviously it should handle other cases such as table aliases, joins, and other common MySQL commands.
Has anybody done this?
How big of a code base are we talking about here? A regular expression for something like this is seriously flirting with disaster and I think you’re probably better off looking for every
mysql_queryor whatever in your code and making the changes yourself. It shouldn’t take more than the hour you’d spend implementing your regex and fixing all the edge cases that it will undoubtedly miss.