Foros del Web » Programando para Internet » PHP »

Tengo el siguiente problema al levantar de archivos DBF

Estas en el tema de Tengo el siguiente problema al levantar de archivos DBF en el foro de PHP en Foros del Web. Tengo el siguiente script que me levanta datos de una base de Dbase, y los guardo en una tabla de MYsql. El problema se me ...
  #1 (permalink)  
Antiguo 04/04/2007, 08:29
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 7 meses
Puntos: 0
Tengo el siguiente problema al levantar de archivos DBF

Tengo el siguiente script que me levanta datos de una base de Dbase, y los guardo en una tabla de MYsql. El problema se me presenta cuando quiero levantar datos (por ejempo en el codigo) que como parte de la cadena de texto se presenta el apostrofe (comilla simple) '. Como puedo hacer para evitar este inconveniente.

El script:

Código PHP:
<?php
include ('config.php');
$link conectar_BD();
// abrir en modo solo lectura
$db dbase_open('mia.DBF'0);

if (
$db) {
  
$numero_registros dbase_numrecords($db);
  for (
$i 1$i <= $numero_registros$i++) {
     
$row dbase_get_record_with_names($db$i);
     
     
     
$codigoweb1 $row['CODIGOWEB1'];
     
$codigoweb2 $row['CODIGOWEB2'];
     
$codigo $row['CODIGO'];
     
          
        echo 
"Linea ($i):-->  " $row['CODIGO'] . "</br>";
         
$sql="insert into $name_tb[productos]
        (codigoweb1, codigoweb2, codigo)
        values
        ('$codigoweb1', '$codigoweb2', '$codigo')"
;
        
$result1=mysql_query($sql) or die(mysql_error());
  }
}
?>
El error que me larga es este:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'S-21, siendo el codigo completo: 01.01-NIC'S-21. Por esto entiendo que el problema se me presenta con la comilla simple dentro del campo.

Desde ya muchas gracias, saludos
  #2 (permalink)  
Antiguo 04/04/2007, 11:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Tengo el siguiente problema al levantar de archivos DBF

Te recomiendo que postees el Query ya armado una vez parseado por PHP al hacer echo $sql, antes de enviarlo, otra forma de limpiar tu query es usando sprintf:
Código PHP:
$sql 'INSERT INTO %s (codigoweb1, codigoweb2, codigo) VALUES( '%s', '%s', '%s')';
$sql sprintf$sql$name_tb['productos'], $codigoweb1$codigoweb2$codigo );
$result1=mysql_query($sql) or die("Query error:" mysql_error() . " Query: "  $sql ); 
  #3 (permalink)  
Antiguo 04/04/2007, 11:32
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Tengo el siguiente problema al levantar de archivos DBF

Disculpame pero no te entendi el uso del %s. Desde ya mcuhas gracias
  #4 (permalink)  
Antiguo 04/04/2007, 11:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Tengo el siguiente problema al levantar de archivos DBF

Lee la documentacion de sprintf, te sirve para formatear un string con varios argumentos.
  #5 (permalink)  
Antiguo 04/04/2007, 13:54
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Tengo el siguiente problema al levantar de archivos DBF

Ok, lei. Haciendo algo de lo que conversamos anteriromente (ahora me lee el codigo, lo lei en el error pero me sigue largando error).

Query error:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'S-21 ')' at line 1 Query: INSERT INTO tblproductos (codigoweb1, codigoweb2, codigo) VALUES( '0', '0', '02.NIC'S-21 ')
  #6 (permalink)  
Antiguo 04/04/2007, 14:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Tengo el siguiente problema al levantar de archivos DBF

El problema es el ' que tienes en el codigo te recomiendo entonces hacer esto:
Código PHP:
$sql 'INSERT INTO %s (codigoweb1, codigoweb2, codigo) VALUES( '%s', '%s', '%s')';
$sql sprintf$sql$name_tb['productos'], addslashes($codigoweb1), addslashes($codigoweb2), addslashes($codigo) );
$result1=mysql_query($sql) or die("Query error:" mysql_error() . " Query: "  $sql ); 
  #7 (permalink)  
Antiguo 04/04/2007, 14:16
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Tengo el siguiente problema al levantar de archivos DBF

Ok, quedo pronto, estoy ahora averiguando sobre lo ultimo que hicimos, el uso de addslashes. gracias por tu tiempo, saludos y hasta la proxima
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 14:56.