Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

problema al insertar datos en BD

Estas en el tema de problema al insertar datos en BD en el foro de Bases de Datos General en Foros del Web. Hola. estoy trabajando en php una aplicacion para insertar datos a una bd y luego compararlos para eliminar los repetidos. este es el script que ...
  #1 (permalink)  
Antiguo 21/11/2005, 13:05
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años, 5 meses
Puntos: 20
problema al insertar datos en BD

Hola.

estoy trabajando en php una aplicacion para insertar datos a una bd y luego compararlos para eliminar los repetidos.

este es el script que tengo:

Código PHP:
<? 
    $dbh
=mysql_connect ("localhost""root""") or die ('I cannot connect to the database because: ' mysql_error()); 
    
mysql_select_db ("algarta"); 
      
    
$handle fopen ("bd.csv""r");      
    if (
$handle
    { 
        
$row explode("\n"fread($handlefilesize("bd.csv"))); 
    } 
     
$i 0
     while (
$i $row){ 
    foreach(
$row as $data
    {      
        
$data explode(";"$row[$i], 8); 

        echo 
'<table border="1">'
        echo 
'<tr>'
        
$sql "INSERT INTO empresas (nombre,apellido1,apellido2,cargo,empresa,direccion,telefono,extension,ciudad)    VALUES (0"
        foreach(
$data as $field
        {      
            echo 
"<td><b>".$field."</b></td>"
            
$sql .= ",'$field'"
        } 
        
$sql .= ");"
        
mysql_db_query ("algarta"$sql) or die (mysql_error()); 
        echo 
'</tr>'
        echo 
'</table>'
    
$i++; 
    } 
    } 
?>
pero al correrlo, me arroja el siguiente error:

Cita:
El número de columnas no corresponde al número en la línea 1


no se porque me sale si mi tabla tiene 8 campos y estoy intentado registrar 7, el campo adicional que tengo (el octavo) es el idempresa, es una clave autonumerica.

quien me puede decir que pasa?
__________________
Say no more.......
  #2 (permalink)  
Antiguo 22/11/2005, 02:38
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años
Puntos: 8
Yo veo que estás intentando insertar 9, pero bueno da igual. Fijate en el foreach, que te devuelva 8 campos exactos (ya que en nombre estás insertando "0".
  #3 (permalink)  
Antiguo 24/11/2005, 11:24
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años, 5 meses
Puntos: 20
como es esto? me podrias explicar un poco mas claro???
__________________
Say no more.......
  #4 (permalink)  
Antiguo 24/11/2005, 11:36
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años
Puntos: 8
Estas haciendo un insert into tabla (9campos), values (0, foreach)

Luego a nombre ya le estás asignando 0, por lo que sólo te quedan 8 valores que agregar en el foreach.
  #5 (permalink)  
Antiguo 24/11/2005, 12:14
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años, 5 meses
Puntos: 20
hummmmm pues acabo dedejar el insert de la siguiente manera

Código PHP:

$sql 
"INSERT INTO empresas (nombre,apellido1,apellido2,cargo,empresa,direccion,telefono,extension,ciudad)    VALUES ("
        foreach(
$data as $field
        {      
            echo 
"<td><b>".$field."</b></td>"
            
$sql .= ",'$field'"
        } 
        
$sql .= ");"
y nada, no me resulta, como lo podria lograr mejor???
__________________
Say no more.......
  #6 (permalink)  
Antiguo 25/11/2005, 10:07
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años, 5 meses
Puntos: 20
No se, pero considero que este post deberia estar mejor en el foro de php, por favor le pido a algun moderador que lo mueva alla...

gracias
__________________
Say no more.......
  #7 (permalink)  
Antiguo 25/11/2005, 11:24
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años
Puntos: 8
Asi te da error porque haces:

insert into (....) values (,valor1, ....)

metes una coma inicial que está mal
  #8 (permalink)  
Antiguo 27/11/2005, 20:55
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años, 5 meses
Puntos: 20
ahora me dice parse error in line 30

Código PHP:
  $sql .= '"'$field"; 
__________________
Say no more.......
  #9 (permalink)  
Antiguo 28/11/2005, 01:35
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años
Puntos: 8
Estás poniendo una ' simple antes del campo:
Código:
$sql .= "'$field'";
  #10 (permalink)  
Antiguo 28/11/2005, 01:37
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años
Puntos: 8
Yo lo haría así:

Código:
$sql = "INSERT INTO empresas (nombre,apellido1,apellido2,cargo,empresa,direccion,telefono,extension,ciudad)    VALUES (";
        foreach($data as $field)
        {      
            echo "<td><b>".$field."</b></td>";
            $sql .= "'$field',";
        }
        $sql = sql.subString(0,$sql.Length-1);   
//suponiendo que PHP te admita esa función, pero seguro que tiene 
//alguna parecida, ya que si no te quedaría una , al final de la instrucción
        $sql .= ");";
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:37.