Foros del Web » Programando para Internet » PHP »

PHP OO Ingreso múltiple mysql

Estas en el tema de Ingreso múltiple mysql en el foro de PHP en Foros del Web. buen día, tengo una consulta, estoy tratando de ingresar varios registro a la vez, este codigo funciona perfectamente y hace el ingreso, pero me sale ...
  #1 (permalink)  
Antiguo 26/11/2013, 08:29
 
Fecha de Ingreso: junio-2008
Ubicación: Guatemla
Mensajes: 31
Antigüedad: 16 años, 5 meses
Puntos: 0
Exclamación Ingreso múltiple mysql

buen día, tengo una consulta, estoy tratando de ingresar varios registro a la vez, este codigo funciona perfectamente y hace el ingreso, pero me sale un error de sintaxis, y la intente solucionarlo pero no lo he logrado asi que paso a ver si alguien de usted me puede ayudar
Código PHP:
<?php
for($i=0;$i<=30;$i++){
$uno $_POST['dato1'][$i];
$dos $_POST['dato2'][$i];
$tres $_POST['dato3'][$i]; 
$conexion=mysql_connect('localhost','root','') ;
mysql_select_db('basededatos',$conexion) ;
   
$consulta "insert into tabla (campo1, campo2, campo3)
VALUES ('$uno','$dos','$tres')"
;
 
$resultado mysql_query($consulta,$conexion) or die (mysql_error());

echo 
"<script>alert('Almacenado');</script>";    
    
header("Location:ingreso2.php");

mysql_close($conexion);}

?>
el error es el siguiente:
Problemas en el select: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 '' at line 1
  #2 (permalink)  
Antiguo 26/11/2013, 08:48
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Ingreso múltiple mysql

Hola jospercin, una pregunta los 3 campos son alfanuméricos?. O hay alguno que es numérico?.
  #3 (permalink)  
Antiguo 26/11/2013, 08:59
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Ingreso múltiple mysql

Proba esto:

Código PHP:
Ver original
  1. <?php
  2. for($i=0;$i<=30;$i++){
  3. $uno = "'" . $_POST['dato1'][$i] . "'";
  4. $dos = "'" . $_POST['dato2'][$i] . "'";
  5. $tres = "'" . $_POST['dato3'][$i  "'";  
  6. $conexion=mysql_connect('localhost','root','') ;
  7. mysql_select_db('basededatos',$conexion) ;
  8.    
  9. $consulta = "insert into tabla (campo1, campo2, campo3)
  10. VALUES ($uno,$dos,$tres)";
  11.  
  12. $resultado = mysql_query($consulta,$conexion) or die (mysql_error());
  13.  
  14. echo "<script>alert('Almacenado');</script>";    
  15.     header("Location:ingreso2.php");
  16.  
  17. mysql_close($conexion);}
  18.  
  19. ?>
  #4 (permalink)  
Antiguo 26/11/2013, 09:04
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Ingreso múltiple mysql

Esta linea es así:

Código PHP:
Ver original
  1. $tres = "'" . $_POST['dato3'][$i] .  "'";
'";
  #5 (permalink)  
Antiguo 26/11/2013, 09:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Ingreso múltiple mysql

Cita:
Iniciado por jospercin Ver Mensaje
buen día, tengo una consulta, estoy tratando de ingresar varios registro a la vez, este codigo funciona perfectamente y hace el ingreso, pero me sale un error de sintaxis, y la intente solucionarlo pero no lo he logrado asi que paso a ver si alguien de usted me puede ayudar
Código PHP:
<?php
for($i=0;$i<=30;$i++){
$uno $_POST['dato1'][$i];
$dos $_POST['dato2'][$i];
$tres $_POST['dato3'][$i]; 
$conexion=mysql_connect('localhost','root','') ;
mysql_select_db('basededatos',$conexion) ;
   
$consulta "insert into tabla (campo1, campo2, campo3)
VALUES ('$uno','$dos','$tres')"
;
 
$resultado mysql_query($consulta,$conexion) or die (mysql_error());

echo 
"<script>alert('Almacenado');</script>";    
    
header("Location:ingreso2.php");

mysql_close($conexion);}

?>
el error es el siguiente:
Problemas en el select: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 '' at line 1
En el contexto de tu caso, no parece haber problemas puntuales en la sintaxis, pero puede suceder que los datos quellegan con las variables contengan caracteres que rompan la sintaxis, como por ejemplo, la existencia de un apóstrofo (').

Trata de mostrar lo que contienen las variables antes del insert, por ejemplo:

Código PHP:
<?php
for($i=0;$i<=30;$i++){
$uno $_POST['dato1'][$i];
$dos $_POST['dato2'][$i];
$tres $_POST['dato3'][$i]; 
$conexion=mysql_connect('localhost','root','') ;
mysql_select_db('basededatos',$conexion) ;
   
$consulta "insert into tabla (campo1, campo2, campo3)
VALUES ('$uno','$dos','$tres')"
;

// Visualizar la consulta antes de ejecutarla
echo $consulta ;

$resultado mysql_query($consulta,$conexion) or die (mysql_error());

echo 
"<script>alert('Almacenado');</script>";    
    
header("Location:ingreso2.php");

mysql_close($conexion);}

?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 26/11/2013, 09:27
Avatar de Trublux  
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 355
Antigüedad: 14 años
Puntos: 48
Respuesta: Ingreso múltiple mysql

Las funciones mysql_query, mysql_select_db, etc. están obsoletas, en la documentación te pone qué función deberías usar.
Los datos deberías escaparlos con mysqli_real_escape_string (o quizá con mysql_real_escape_string pero está obsoleta) o por lo menos usar addslashes.

Cuando quieres insertar varios registros no necesitas repetir todo, puedes poner los valores que tienes que insertar separados por coma. Deberías revisar la documentación de la sentencia insert en mysql, hay un ejemplo para hacer inserciones múltiples:
Código MySQL:
Ver original
  1. INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

P.D.: Esto debería ir en MySQL.
__________________
eZ Publish Developer Basic Legacy
eZ Publish Developer Basics (4.4)
Alojamientos rurales en España

Última edición por Trublux; 26/11/2013 a las 10:08
  #7 (permalink)  
Antiguo 26/11/2013, 11:00
 
Fecha de Ingreso: junio-2008
Ubicación: Guatemla
Mensajes: 31
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Ingreso múltiple mysql

gracias a todos por su ayuda, aprendí nuevas cosas, les comento que ya solucione el problema, use lo que martin_9_91 dijo pero aun así seguía dando problemas y cuando quite el script de alerta y pude un
Código PHP:
echo 'Ingreso correcto'
para ver si mostraba algún error y no lo mostró, así que al final quedo de la siguiente manera.
Código PHP:
<?php
$cantidad 
$_POST['cantidad'];
$i0;
for(
$i=0;$i<$cantidad;$i++){
$uno    ="'".$_POST["dato1"][$i]."'";  
$dos        ="'".$_POST["dato2"][$i]."'";
$tres    ="'".$_POST["dato3"][$i]."'";
$conexion=mysql_connect('localhost','root','') ;
mysql_select_db('basededatos',$conexion) ;
   
$consulta "insert into tabla (campo1, campo2, campo3)
VALUES ($uno,$dos,$tres)"
;
 
$resultado mysql_query($consulta,$conexion) or die (mysql_error());

mysql_close($conexion);}
echo 
'<script>alert("Nota almacenada");    
document.location=("index.php");
</script>'
;

    
?>
tambien defini el tamaño del arrya "no se si asi se dira" el cual sera del tamaño de las columnas que se muestren en el select de la anterior pagina,

en fin he terminado y salio muy bien, de nuevo gracias a todos
  #8 (permalink)  
Antiguo 26/11/2013, 11:12
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Ingreso múltiple mysql

Buenísimo, me alegro que te haya salido!.

Saludos

Etiquetas: inserción, multiples
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 18:35.