I'm trying to create a very simple database abstraction, one part of it using prepared queries.
Now, I have a function take a query string and an array of values like this:
$query = "SELECT `first_name`, `last_name` FROM ::table_name WHERE `id` = :id"
$values = array(
'table_name' = $this->table_name,
'id' = $user_id,
);
this will create a query like this:
SELECT `first_name`, `last_name` FROM `sometablename` WHERE `id` = '1234'
my problem is this:
I'm using preg_replace_callback
to grab the ::identifiers and :identifiers from the query string, and then sending it to a sanitization function. The problem is, I also need to send the values array, so that the function can take the match from the regexp, get the item in the values array with that key, escape the value, wrap it in the right quotes and then return it.
But I can't pass any extra information to the callback. I could use a private static variable but this is very hacky.
What is another approach to this?