2012-06-21 12 views
14

Quiero escapar de la cadena en magento, pero cuando estoy usando mysql_real_escape_string, recibo una advertencia.¿Cómo escapar de mysql en magento?

Advertencia: mysql_real_escape_string() [function.mysql-real-fuga-string]: No se puede conectar al servidor de MySQL local de mediante toma de /var/lib/mysql/mysql.soc' .... . '

No he podido encontrar ninguna función de escape mysql del núcleo de magento. ¿Entonces qué debo hacer?

+0

Sí, y todavía buscando en Google para encontrar la respuesta. – user1463076

+0

prueba: http://forums.cpanel.net/f354/cant-connect-local-mysql-server-through-socket-var-lib-mysql-mysql-sock-111-a-78444.html y: http : //stackoverflow.com/questions/5376427/cant-connect-to-local-mysql-server-through-socket-var-mysql-mysql-sock-38 – alfasin

Respuesta

24

Utilice esta opción para escapar de una cadena para una consulta y añadir las comillas simples que rodean:

Mage::getSingleton('core/resource')->getConnection('default_write')->quote($string); 

Puede buscar Varien_Db_Adapter_Pdo_Mysql por citar más detalles si es necesario.

+0

Gracias, esta función está escapando bien de la cadena. También agrega comillas al principio y al final de la cadena. Espero que funcione ahora. – user1463076

+1

¿Podría marcar la pregunta como respondida también? – Vinai

+1

esta cita estaba agregando comillas al comienzo y al final de la cadena. Luego probé magento sin ninguna función de escape y no hay necesidad de escapar de la cadena. Creo que magento tiene la función de escape predeterminada. 'mi código ($ tbl_customer = getMazeTable ("customer_entity"); \t \t \t \t \t \t $ conexión = Mago :: getSingleton ('core/recurso') \t \t \t \t \t \t \t -> getConnection ('core_read'); \t \t \t \t \t \t $ = $ seleccionar connection-> select() \t \t \t \t \t \t \t -> a partir de ($ tbl_customer) \t \t \t \t \t \t \t -> donde ('email =?', $ Email);) ' – user1463076

7

Creo que Magento usa una capa de Acceso DB basada en PDO, que maneja el escape automáticamente siempre que use parámetros vinculados. Ejemplo de Using Magento Methods to write Insert Queries with care for SQL Injection

$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); 
+1

este es un ejemplo perfecto de por qué responder con un enlace no es una buena idea: el enlace está desactivado. – OSdave

+0

Reparado, por favor elimine el voto a favor. – siliconrockstar

+1

gracias por arreglarlo, eliminé el voto – OSdave

Cuestiones relacionadas