Bien, investigué este un poco. Si puede obtener una instancia de un DB_Adapter (que creo que devolverá la llamada de recurso), esto no debería ser demasiado difícil. En el fondo, Magento se basa en Zend Framework, y el adaptador DB específicamente desciende de Zend_Db_Adapter, por lo que puede utilizar esos métodos de forma gratuita. Vea el enlace anterior para más ejemplos, pero aquí está la sintaxis proporcionada en la documentación, que debe escapar de su entrada automáticamente:
$write = Mage::getSingleton("core/resource")->getConnection("core_write");
// Concatenated with . for readability
$query = "insert into mage_example "
. "(name, email, company, description, status, date) values "
. "(:name, :email, :company, :desc, 0, NOW())";
$binds = array(
'name' => "name' or 1=1",
'email' => "email",
'company' => "company",
'desc' => "desc",
);
$write->query($query, $binds);
Una vez más, ver la documentación para obtener más información.
ACTUALIZACIÓN:
He cambiado el ejemplo anterior. El objeto que obtienes con tu petición core_write es un objeto PDO que expone un método query
(ver arriba) que te permitirá utilizar consultas parametrizadas. Este es, con mucho, un mejor enfoque que el intento de utilizar algo como mysql_real_escape_string para la desinfección de datos, y he probado el código anterior para la corrección. Tenga en cuenta que, a diferencia de la mayoría de las consultas parametrizadas de MySQL, el enlace se hace con: labels, y también que no necesita cotizaciones para sus vars.
En respuesta a su otro punto, y como se indica a continuación, la forma "correcta" de hacerlo en Magento no es utilizar consultas directas en absoluto. Los modelos de objetos de Magento están bien desarrollados y su objetivo es abstraer este tipo de detalles de implementación lejos de ti, porque no debes preocuparte por ello. Para hacerlo "correctamente", cree un nuevo modelo basado en la base de datos y ahorre el dolor de cabeza.
$ contra escritura> presupuesto ($ cadena); – ppostma1