Foros del Web » Programando para Internet » PHP »

duda INSERT INTO

Estas en el tema de duda INSERT INTO en el foro de PHP en Foros del Web. buenos dias, amigos foreros, tengo el siguiente problemilla: tengo un archivo con el siguiente formato: Código HTML: "1,6,00:15:a2:00:05:76";3502020 "1,6,00:15:F2:37:CD:65";3502021 "1,6,00:16:cf:20:54:28";3502022 hice un programa para cargar ...
  #1 (permalink)  
Antiguo 03/06/2009, 08:14
Avatar de darkleo  
Fecha de Ingreso: octubre-2007
Mensajes: 106
Antigüedad: 17 años, 1 mes
Puntos: 0
De acuerdo duda INSERT INTO

buenos dias, amigos foreros, tengo el siguiente problemilla: tengo un archivo con el siguiente formato:
Código HTML:
"1,6,00:15:a2:00:05:76";3502020
"1,6,00:15:F2:37:CD:65";3502021
"1,6,00:16:cf:20:54:28";3502022
hice un programa para cargar este archivo directamente en la BD (MySql) pero me saca este 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 '"1,6,00:15:a2:00:05:76""3502020)' at line 1, si lo inserto por LOAD_FILE no me saca ningun error !!
Aqui el codigo
Código PHP:
for($i=0$i<sizeof($fcontents); $i++) {
             
$line trim($fcontents[$i]);
             echo 
"$line<BR>";
             
$arr explode(";"$line);
             echo 
"$arr";
             
$sql "insert into une values ("implode("\""$arr).")"
Que puedo tener malo???
Muchas gracias
__________________
Just LeO
  #2 (permalink)  
Antiguo 03/06/2009, 08:20
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: duda INSERT INTO

Una cosa, tienes que poner toda la linea en un sol ocampo o como la quieres insertar?

Última edición por abidibo; 03/06/2009 a las 08:27
  #3 (permalink)  
Antiguo 03/06/2009, 08:39
Avatar de darkleo  
Fecha de Ingreso: octubre-2007
Mensajes: 106
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: duda INSERT INTO

buenas, el archivo siempre tiene ese formato, debido a q es un .csv, la idea seria insertar eb una columna 1,6,00:15:a2:00:05:76 este valor y en otra columna este otro 3502020. Muchas gracias
__________________
Just LeO
  #4 (permalink)  
Antiguo 03/06/2009, 08:49
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: duda INSERT INTO

Hola, intenta asì
Código PHP:
$sql "INSERT INTO une VALUES ";
for(
$i=0$i<sizeof($fcontents); $i++) {
    
$line trim($fcontents[$i]);
    
$arr explode(";"$line);
    if(!
$i$sql .= ",";
    
$sql .= "('".mysql_real_escape_string($arr[0])."', '".mysql_real_escape_string($arr[1])."')";  

  #5 (permalink)  
Antiguo 03/06/2009, 08:51
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 17 años, 3 meses
Puntos: 23
Respuesta: duda INSERT INTO

tu error en principio es de comillas

tu fuente es
"1,6,00:15:a2:00:05:76";3502020
"1,6,00:15:F2:37:CD:65";3502021
"1,6,00:16:cf:20:54:28";3502022
(incluyendo comillas)

tu $arr contiene para el primer registro
[0]="1,6,00:15:a2:00:05:76"
[1]=3502020

estas mandando insertar esto

insert into une values ("1,6,00:15:a2:00:05:76""3502020);

creo que estas usando mal el implode

prueba con esto

Código PHP:
<?
$fcontents
=array('"1,6,00:15:a2:00:05:76";3502020','"1,6,00:15:F2:37:CD:65";3502021','"1,6,00:16:cf:20:54:28";3502022');
for(
$i=0$i<sizeof($fcontents); $i++) 

    
$line trim($fcontents[$i]); 
    echo 
"$line<BR>"
    
$arr explode(";"$line); 
    
print_r($arr); echo "<br>";
    
$sql "insert into une values ("implode(","$arr).")";  
    echo 
$sql."<br>";
}
?>
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #6 (permalink)  
Antiguo 03/06/2009, 09:56
Avatar de darkleo  
Fecha de Ingreso: octubre-2007
Mensajes: 106
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: duda INSERT INTO

Muchisisimas gracias excelente Avatar810, de una funciono, claro el error estaba en el implode. abidibo intente como me dijo, pero me sigue arrojando el mismo error, de todos modos muchiisimas gracias a todos, Re-tesos !!!!
__________________
Just LeO
  #7 (permalink)  
Antiguo 03/06/2009, 10:14
Avatar de darkleo  
Fecha de Ingreso: octubre-2007
Mensajes: 106
Antigüedad: 17 años, 1 mes
Puntos: 0
De acuerdo Respuesta: duda INSERT INTO

una ultima pregunta q pena, como lo tenia era q cargaba automaticamente el archivo, pero si quiero de esta forma q puedo tener erroneo???
Código PHP:
<form action="load.php" method="post">
  Archivo a consultar:<input name="nameArchivo" type="file">
  <input type="submit" value="ok">
</form>

<?php
if($nameArchivo!=""){
    
$archivofopen($nameArchivo"r");
y el resto
Código PHP:
for($i=0$i<sizeof($archivo); $i++){ 
igual

Muchas gracias
__________________
Just LeO
  #8 (permalink)  
Antiguo 03/06/2009, 10:26
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 17 años, 3 meses
Puntos: 23
Respuesta: duda INSERT INTO

Cuando envias archivos en un form debe tener una encriptacion

Prueba con esto
<form action="load.php" method="post" enctype="multipart/form-data">

La consulta de un archivo no es directa

en tu php revisa las variables de archivo asi

print_r($_FILE);

Para que veas que es lo que necesitas validar o hacer llamado.
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #9 (permalink)  
Antiguo 03/06/2009, 10:34
Avatar de darkleo  
Fecha de Ingreso: octubre-2007
Mensajes: 106
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: duda INSERT INTO

avatar810, le coloque enctype al form, y el print pero no me imprime nada !!!, cada q hace el submit en la tabla se agrega un campo vacio, pero no lo que contiene el archivo que podra ser ??? muchas gracias
Si lo hago con una variable $fcontents = file ('./pr.csv'); si me funciona bien !!!
__________________
Just LeO
  #10 (permalink)  
Antiguo 03/06/2009, 10:38
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 17 años, 3 meses
Puntos: 23
Respuesta: duda INSERT INTO

puees poner el bloque completo de codigo ya con las modificiaciones que indicas?
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #11 (permalink)  
Antiguo 03/06/2009, 11:00
Avatar de darkleo  
Fecha de Ingreso: octubre-2007
Mensajes: 106
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: duda INSERT INTO

aqui esta
Código PHP:
<html>
<body>
<form action="load.php" method="post" enctype="multipart/form-data">
  Archivo a consultar:<input name="nameArchivo" type="file">
  <input type="submit" value="ok">
</form>

<?php
$connection 
mysql_connect("localhost""root""") or die ("Unable to connect to server");
$db mysql_select_db("test"$connection) or die ("Unable to select database");            
if(
$nameArchivo!="")
{
    
$archivofopen($nameArchivo"r"); 

#$fcontents = file ('fcontents');
#$fcontents = file ('./pr.csv');
       
for($i=0$i<sizeof($archivo); $i++){
             
$line trim($archivo[$i]);
             echo 
"$line<BR>";
             
$arr explode(";"$line);
             
print_r($arr); echo "<br>";
                         
print_r($file);
             echo 
"$arr";
         
$sql "insert into une values ("implode(","$arr).")";        
             
mysql_query($sql);
        
#     fclose($archivo);
             
echo $sql ."<br>\n";
             if(
mysql_error()) {
             echo 
mysql_error() ."<br>\n";
          }
         }
}
       
?>
</body>
</html>
__________________
Just LeO
  #12 (permalink)  
Antiguo 03/06/2009, 11:36
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 17 años, 3 meses
Puntos: 23
Respuesta: duda INSERT INTO

prueba con esto

Código PHP:
<html> 
<body> 
<form action="load.php" method="post" enctype="multipart/form-data"> 
    Archivo a consultar:<input name="nameArchivo" type="file"> 
    <input type="submit" value="ok"> 
</form> 
<?php 
$connection 
mysql_connect("localhost""root""") or die ("Unable to connect to server"); 
$db mysql_select_db("test"$connection) or die ("Unable to select database");             

//Campo del formulario
$file="nameArchivo";
if(
$_FILES[$file]["error"]==0)
{
    
$tmp_name=$_FILES[$file]["tmp_name"];
    
$archivo fopen($tmp_name"r");

    
#$fcontents = file ('fcontents'); 
    #$fcontents = file ('./pr.csv'); 
    
for($i=0$i<sizeof($archivo); $i++)
    { 
        
$line trim($archivo[$i]); 
        echo 
"$line<BR>"
        
$arr explode(";"$line); 
        
print_r($arr); echo "<br>"
        
$sql "insert into une values ("implode(","$arr).")"
        echo 
"Qry: "$sql.";<br>";
        
mysql_query($sql); 
        if(
mysql_error()) 
            echo 
mysql_error() ."<br>"
    } 
    
fclose($archivo);

?> 
</body> 
</html>
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #13 (permalink)  
Antiguo 03/06/2009, 12:36
Avatar de darkleo  
Fecha de Ingreso: octubre-2007
Mensajes: 106
Antigüedad: 17 años, 1 mes
Puntos: 0
Información Respuesta: duda INSERT INTO

uhmm igual, verifico la tabla y se agregan campos vacios, cada vez q se carga el archivo......otra cosita cada q se refresca la pagina load.php adiciona campos en la tabla vacios
__________________
Just LeO

Última edición por darkleo; 03/06/2009 a las 12:59
  #14 (permalink)  
Antiguo 03/06/2009, 14:25
Avatar de darkleo  
Fecha de Ingreso: octubre-2007
Mensajes: 106
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: duda INSERT INTO

me arroja esto
Array ( [0] => )
insert into une values ();

pero no como error !!!! q puedo hacer ??????
__________________
Just LeO
  #15 (permalink)  
Antiguo 03/06/2009, 16:24
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 17 años, 3 meses
Puntos: 23
Respuesta: duda INSERT INTO

Es verdad revisando mas tranquilamente el codigo tenia 2 errores

1) faltaba un punto de concatenacion antes del $sql
2) no valide si ya se habia enviado el archivo

Correcciones

Código PHP:
<html> 
<body> 
<form action="load.php" method="post" enctype="multipart/form-data"> 
    Archivo a consultar:<input name="nameArchivo" type="file"> 
    <input type="submit" name="load_file" value="ok"> 
</form> 
<?php 
$connection 
mysql_connect("localhost""root""") or die ("Unable to connect to server"); 
$db mysql_select_db("test"$connection) or die ("Unable to select database");             

//Campo del formulario
$file="nameArchivo";
//echo "Arreglo FILE <br>"; print_r($_FILES); echo "<br><br>";
if(isset($_POST["load_file"]) && $_FILES[$file]["error"]==0)
{
    
$tmp_name=$_FILES[$file]["tmp_name"];
    
$archivo fopen($tmp_name"r");
    if(
$archivo
    {
        while(!
feof($archivo)) 
        {
            
$arr explode(";"trim(fgets($archivo4096))); 
            
print_r($arr); echo "<br>"
            
$sql "insert into une values ("implode(","$arr).")"
            echo 
"Qry: ".$sql.";<br><br>";
            
mysql_query($sql); 
            if(
mysql_error()) 
                echo 
mysql_error() ."<br>"
        }
        
fclose ($archivo);
    }

?> 
</body> 
</html>
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #16 (permalink)  
Antiguo 03/06/2009, 16:45
Avatar de darkleo  
Fecha de Ingreso: octubre-2007
Mensajes: 106
Antigüedad: 17 años, 1 mes
Puntos: 0
De acuerdo Respuesta: duda INSERT INTO

muchisisimas gracias Avatar810, ufff super teso, perdona la ignorancia, pero poco llevo con php, De grandiosa ayuda Avatar810 !!!!
__________________
Just LeO
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 21:28.