Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Generar INSERT SQL y escapar comillas simples

Estas en el tema de Generar INSERT SQL y escapar comillas simples en el foro de PHP en Foros del Web. Muy buenas Forerosdelaweb. ;) Hoy estoy intentando realizar un script en PHP para generar varios INSERT y estos almacenarlos en un fichero con extensión .sql ...
  #1 (permalink)  
Antiguo 25/11/2014, 18:09
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Pregunta Generar INSERT SQL y escapar comillas simples

Muy buenas Forerosdelaweb. ;)

Hoy estoy intentando realizar un script en PHP para generar varios INSERT y estos almacenarlos en un fichero con extensión .sql

Bien los datos los obtengo leyendo un fichero .csv en donde están los campos a insertar separados uno en cada columna. (por eso uso el .csv para delimitar por \t )

Realizo la lectura de estos campos linea por linea, pero cuando en el campo contenido existe alguna URL esto me produce fallo al almacenar la sentencia INSERT.

Es decir si tengo un texto en la columna CONTENT con un contenido como este en el .csv:

Cita:
soy el texto del contenido <a href='www.prueba.com'>link</a> continuamos con el texto del fichero..
Cuando llegó a esa parte donde el link esta entre '' , el script me falla porque uso lo siguiente.

Código PHP:
Ver original
  1. fwrite( $my_sql,
  2.             "INSERT INTO `wp_posts` (`ID`, `campo1`, `content`, `post_date_gmt`, )
  3.  
  4. VALUES ( '', 'texto1', ' ".$content." ', '2012-01-01 00:00:00' );"  . PHP_EOL );
  5.  
  6. /*como ven abro con Comilla doble el INSERT y cierro con comillas dobles al final del VALUE();*/
  7. /*Error se produce cuando encuentra otras comillas simples dentro de la variable $content*/

El Error, es debido a lo comentado, cuando encuentra las comillas simples del <a href='www.prueba.com'>link</a> me da error porque se sale de la escritura.

En si me crea el comando, pero la sentencia SQL esta mal creada y para que funcione debo cambiar ese link <A> </A> a mano, :( .

Como puedo resolver esto. o de que forma puedo crear varias sentencias insert leyendo los datos de las columnas de un CSV.

Gracias espero entiendan mi pregunta y puedan ayudarme

Saludos!
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #2 (permalink)  
Antiguo 25/11/2014, 18:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Generar INSERT SQL y escapar comillas simples

Necesitas escapar apropiadamente cada valor para evitar errores de sintaxis de SQL.

Por favor, consulta el manual del motor de base de datos que estés usando, o si no usas alguno podrías usar addslashes() aunque eso no asegura compatibilidad al 100%.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/11/2014, 02:35
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: Generar INSERT SQL y escapar comillas simples

Prueba a utilizar la funcion real_escape_string() para escapar los datos a introducir en la base de datos:

http://php.net/manual/es/mysqli.real-escape-string.php
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #4 (permalink)  
Antiguo 26/11/2014, 08:22
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: Generar INSERT SQL y escapar comillas simples

Gracias por las respuestas, lo he probado ambas funciones, la 1 parece funcionar. Aunque he realizado otro script un poco distinto y por ahora me ha resuelto este problema de las comillas.

;) Espero no tener que postear en este post una nueva duda. Por ahora va perfecto si ocurre algún fallo lo comento.

Gracias
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1

Etiquetas: comillas, escapar, insert, simples, sql, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:20.