Estoy tratando de crear una abstracción de base de datos muy simple, una parte de ella usando consultas preparadas.implementando una consulta preparada simple en PHP
Ahora, tengo una función toma una cadena de consulta y una serie de valores de la siguiente manera:
$query = "SELECT `first_name`, `last_name` FROM ::table_name WHERE `id` = :id"
$values = array(
'table_name' = $this->table_name,
'id' = $user_id,
);
Esto creará una consulta como esta:
SELECT `first_name`, `last_name` FROM `sometablename` WHERE `id` = '1234'
mi problema es el siguiente:
Estoy usando preg_replace_callback
para tomar los identificadores :: y: identificadores de la cadena de consulta, y luego enviarlo a una función de desinfección. El problema es que también necesito enviar la matriz de valores para que la función pueda tomar la coincidencia de la expresión regular, obtener el elemento en la matriz de valores con esa clave, escapar del valor, envolverlo en las comillas correctas y luego devolverlo .
Pero no puedo pasar información adicional a la devolución de llamada. Podría usar una variable estática privada, pero esto es muy hacky.
¿Cuál es otro enfoque para esto?
¡esto es perfecto! Ojalá lo leyera antes de usar una gran clase para manejarlo ... supongo que lo cambiaré a esta versión más simple. ¡Gracias! –
O podría usar http://php.net/manual/en/function.preg-replace-callback.php. No me gusta la idea de poner código en cuerdas. – mpen
@Mark - Carson especifica que 'preg_replace_callback()' no funciona para él, porque no puede pasar parámetros adicionales a la función de devolución de llamada. Usar 'preg_replace()' con la opción 'e' es la solución alternativa. Tenga en cuenta también que 'preg_replace_callback()' utiliza el código evaluado, por lo que es solo la naturaleza de la situación. – zombat