Escapar comillas PHP

publicado por: Anonymous

estoy haciendo un insert en sql y necesitaba cambiar las comillas simples, ya que por ejemplo un el nombre O’Connor rompe la estructura.
Lo he intentado poniendo:

str_replace("'", "'", $cadena);

Tambien con:

htmlspecialchars($contenido->texto, ENT_NOQUOTES)

Y no me funcionan. Éste último si me convierte las comillas simples, pero también convierte los símbolos <, >, etc, y no deben convertirse.

Ah, y también he probado con addslashespero nada…

Muchas gracias de antemano!!

solución

En tu caso debes usar barra doble para escapar las comillas de la variable. La función mysql_real_escape_string lo hace automaticamente aunque necesita tener una conexión establecida previamente. Si deseas escapar la cadena antes de conectar la base de datos puedes implementar tu propio método, siempre y cuando tengas en cuenta factores como inyección SQL (Documentado en PHP.Net)

function sql_escape_mimic($inp) { 
    if(is_array($inp)) 
        return array_map(__METHOD__, $inp); 

    if(!empty($inp) && is_string($inp)) { 
        return str_replace(array('\', "", "n", "r", "'", '"', "x1a"), array('\\', '\0', '\n', '\r', "\'", '\"', '\Z'), $inp); 
    } 

    return $inp; 
} 

Referencia
http://php.net/manual/es/function.mysql-real-escape-string.php

Respondido por: Anonymous

Leave a Reply

Your email address will not be published.