Foros del Web » Programando para Internet » PHP »

Como lo puedo solucionar????

Estas en el tema de Como lo puedo solucionar???? en el foro de PHP en Foros del Web. Buenas Tardes! Tengo el siguiente script que hace el poblamiento en una tabla a partir de un archivo plano (deudasee3.txt), funciona bien pero no inserta ...
  #1 (permalink)  
Antiguo 29/08/2003, 14:01
 
Fecha de Ingreso: enero-2003
Mensajes: 286
Antigüedad: 21 años, 3 meses
Puntos: 0
Como lo puedo solucionar????

Buenas Tardes!

Tengo el siguiente script que hace el poblamiento en una tabla a partir de un archivo plano (deudasee3.txt), funciona bien pero no inserta los campos que tiene como caracter comillas simples ', como por ejemplo O' Higgins, yo creo que es por que lo interpreta como delimitador en el insert ('$array[3]') y la verdad es que no se como solucionarlo. Si alguien sabe por favor que me ayude, es urgente...
  • <?
    set_time_limit(5*60);
    $database = pg_connect ("host=localhost port=5432 dbname=xxxxx user=postgres");
    if (!$database) {
    echo "No me puedo conectar\n";
    exit;
    }
    //archivo maestro(deudasee3.txt)
    $archivo3 = file("/home/deudasee3.txt", "r");
    $lineas3 = count($archivo3);
    echo "$lineas3\n";
    echo $archivo3[0];
    for($i=0; $i < $lineas3; $i++){
    $array= explode(";", $archivo3[$i]);
    echo $archivo3[$i];
    $result3 = @pg_exec ($database, "insert into deuda (cta_cliente, num_factura, fec_factura, val_factura, fec_vencimi)
    values ('$array[0]','$array[1]','$array[2]','$array[3]','$array[4]')");
    }
    pg_close($database);
    ?>

Saludos
Reckba

Última edición por reckba; 29/08/2003 a las 14:06
  #2 (permalink)  
Antiguo 29/08/2003, 14:06
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Si, tienes razon. PHP al sustituir por el valor manda la consulta 'O'Higgins', que no tiene una sintaxis valida. Tendrias que escapar la cadena. En PG, no se como se hace, pero para MySQL se puede usar addslashes() (www.php.net/addslashes).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 29/08/2003, 15:11
 
Fecha de Ingreso: enero-2003
Mensajes: 286
Antigüedad: 21 años, 3 meses
Puntos: 0
no dice que solo sea para mysql, asi que creo que podria ser asi:

$dire=$array[2];
$dire1=AddSlashes($dire);

y luego en el insert bla bla '$array[0]','$array[1]','$dire1', bla bla

no puedo probarlo por ahora, pero lo hare mas tarde

si alguien tiene otra opinion sera biem recibida

Saludos
Reckba
  #4 (permalink)  
Antiguo 29/08/2003, 15:31
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Yo lo que decia es que el caracter de escape en MySQL es \, que es lo que añade addslashes(). Pero puede que PG use otro caracter de escape, aunque me extraña.

Por cierto, un vistazo rapido al manual y me he dado cuenta que existe una funcion especifica: pg_escape_string() (www.php.net/pg_escape_string), para version 4.2 y superior y PG 7.2. Pone que es preferible a addslashes().

Saludos.

PD: Tambien MySQL tiene una funcion especifica.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 30/08/2003, 08:01
 
Fecha de Ingreso: enero-2003
Mensajes: 286
Antigüedad: 21 años, 3 meses
Puntos: 0
Funciono la funcion AddSlashes($dire);


Saludos
Christian
  #6 (permalink)  
Antiguo 02/09/2003, 16:55
 
Fecha de Ingreso: enero-2003
Mensajes: 286
Antigüedad: 21 años, 3 meses
Puntos: 0
Otra vez de vuelta.

Ahora no metira errores, con eso pense que estaba funcionando bien, pero me acabo de dar cuenta que no esta insertando nada el campo va vacio y no se que esta mal, el scrip es el siguiente
  • <?
    set_time_limit(15*60);
    $database = pg_connect ("host=localhost port=5432 dbname=xxxxxx user=postgres");
    if (!$database) {
    echo "No me puedo conectar\n";
    exit;
    }
    //archivo maestro(maestro.txt)
    $archivo6 = file("/var/www/html/cope2/planos/maestro1.txt", "r");
    $lineas6 = count($archivo6);
    $dire=$array[5];
    $dire1=AddSlashes($dire);
    for($i=0; $i < $lineas6; $i++){
    $array= explode("@", $archivo6[$i]);
    $result6 = pg_exec ($database, "insert into cliente (cta_cliente, rut_cliente, nombres, ap_paterno, ap_materno, domicilio, telefono, fax, fecha_incor, contrasena)
    values ('$array[0]','$array[1]','$array[2]','$array[3]','$array[4]','$dire1', '$array[6]','$array[7]','$array[8]','$array[9]')");
    }
    echo "$lineas6\n";
    pg_close($database);
    ?>

Como lo puedo solucionar???

Saludos
Reckba
  #7 (permalink)  
Antiguo 02/09/2003, 17:35
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Si te fijas estas poniendo estas lineas:
Código PHP:
$dire=$array[5];
$dire1=AddSlashes($dire); 
fuera del bucle, antes incluso de calcular $array. Debes meterlas en el bucle justo despues del explode y antes de montar la consulta.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 08:00.