Foros del Web » Programando para Internet » PHP »

Ayuda básica con sintaxis

Estas en el tema de Ayuda básica con sintaxis en el foro de PHP en Foros del Web. Buenas tardes, Tengo hecho un query a una base de datos, que me da timeout, creo que por error de sintaxis. Es así: for($i=0;i<=19;$i++) { ...
  #1 (permalink)  
Antiguo 31/10/2008, 12:05
 
Fecha de Ingreso: agosto-2008
Mensajes: 166
Antigüedad: 16 años, 3 meses
Puntos: 1
Ayuda básica con sintaxis

Buenas tardes,

Tengo hecho un query a una base de datos, que me da timeout, creo que por error de sintaxis.

Es así:

for($i=0;i<=19;$i++) {

$insertar= "INSERT INTO database (campo1,campo2,campo3,idtabla) VALUES ('".$formularioa[$i]."','".$formulariob[$i]."','".$formularioc[$i]."','5')";
}

$result = mysql_query($insertar) or die( mysql_error() );


El error está en los valores a insertar en los campos de la tabla, que son recogidos por un formulario también generado con unbucle, donde los campos son $formulario[$i] (i va desde 0 hasta 19). He probado a poner las variables como $formularioa[0] y sí que va, y como $formularioa['$i'] que tambien se queda atascado.

Alguien me puede echar una mano?
Gracias y un saludo
  #2 (permalink)  
Antiguo 31/10/2008, 12:08
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años
Puntos: 17
Respuesta: Ayuda básica con sintaxis

El for está mal, sería así:

Código php:
Ver original
  1. for($i=0;$i<=19;$i++) {

Además el mysql_query lo tienes que hacer dentro del bucle, sino sólo te insertaría el último.
  #3 (permalink)  
Antiguo 31/10/2008, 12:12
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Ayuda básica con sintaxis

Te faltaba el $ en la variable $i.
Eso pasa frecuentemente.

Por cierto, al hacer:

Código php:
Ver original
  1. for($i=0;$i<=19;$i++) {
  2.  
  3. $insertar= "INSERT INTO database (campo1,campo2,campo3,idtabla) VALUES ('".$formularioa[$i]."','".$formulariob[$i]."','".$formularioc[$i]."','5')";
  4. }
  5.  
  6. $result = mysql_query($insertar) or die( mysql_error() );

La variable $insertar se seguira reemplazando, y supongo que no es eso lo que quieres hacer?
  #4 (permalink)  
Antiguo 31/10/2008, 12:17
 
Fecha de Ingreso: agosto-2008
Mensajes: 166
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Ayuda básica con sintaxis

Ais!!! Qué burrísimo!!!! Gracias a ambos, normalmente me tiro horas con estos errores, pero en este caso y convencido que era por el query, llevaba tambien viendo la pagina entera sin ver el bucle... en fin..

Gracias
  #5 (permalink)  
Antiguo 31/10/2008, 12:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 166
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Ayuda básica con sintaxis

Vaya, ya de paso, ahora me sale otro fallo:

Incorrect integer value: '' for column 'campo1' at row 1

Entiendo que se cuelan unas comillas, y que ese campo es tipo integer (que lo es), pero no se como se cuelan.

el código que genera elcampo del formulario es así:

for($i=0;$i<=19;$i++) {
echo "Nº: <input type='text' name=\"formularioa[$i]\" size='2' maxlength='2'><br>";
} (pienso que se colarán ahi)


Luego simplifico la variable y le omito los caracteres de control:

for($i=0;$i<=19;$i++) {
$formularioa[$i]=addslashes($_POST['formularioa'][$i]);
}

Y luego ya el código de la consulta que os he puesto antes.

Jop : (
  #6 (permalink)  
Antiguo 02/11/2008, 14:02
 
Fecha de Ingreso: agosto-2008
Mensajes: 166
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Ayuda básica con sintaxis

Jop, lo estoy intentando pero no consigo arreglar el error que nombro en mi último mensaje. Seguro que es algo muy simple pero no lo consigo : ( ¿Alguien puede ayudarme please?

Muchas gracias y un saludo
  #7 (permalink)  
Antiguo 02/11/2008, 15:10
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: Ayuda básica con sintaxis

Cita:
Incorrect integer value: '' for column 'campo1' at row 1
Así a bote pronto, mirando por encima el código que pusiste de la consulta, diría que el problema puede estar en el galimatías de comillas que hay alrededor de cada variable concatenada en el INSERT. Prueba a quitar todas las comillas simples y dobles (incluyendo los puntos) por si las moscas :)

Un saludo.
  #8 (permalink)  
Antiguo 03/11/2008, 13:12
 
Fecha de Ingreso: agosto-2008
Mensajes: 166
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Ayuda básica con sintaxis

Hola a todos, bueno, antes de nada hare un pequeño resumen para que no tengais que leer todo el post:

tengo hecho un query (con la ayuda de esta buena gente que ha posteado), para insertar datos a una base de datos, es muy sencillo:

.
for($i=0;$i<=19;$i++) {

$insertar= "INSERT INTO database (campo1,campo2,campo3,idtabla) VALUES ('".$formularioa[$i]."','".$formulariob[$i]."','".$formularioc[$i]."','5')";

}

$result = mysql_query($insertar) or die( mysql_error() );

Y me da este error: Incorrect integer value: '' for column 'campo1' at row 1

(El "campo1" es un campo que tengo definido como INT, con el valor máximo de 2 cifras). Pensé que el error vendría por alguna comilla, pero no, a base de probar, probar, probar y probar (toda la santa tarde), he descubierto que el error viene porque el campo en mysql está definido como int (que es precisamente lo que quiero, un campo numérico de dos cifras), si lo modifico a text, no me sale ese error, y si tras insertar los datos, hago un echo de la variable $formularioa[$i] para todos sus valores, no aparecen comillas por ningún sitio.

¿Alguien sabe como solventar este error? He tenido tentación de cambiar el tipo de campo en mysql a text, pero me gustaría hacer las cosas bien, que luego todo son problemas.

Muchas gracias por anticipado y un saludo.
  #9 (permalink)  
Antiguo 03/11/2008, 15:02
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda básica con sintaxis

Y qué valor es el que trae $formularioa[$i]?

MySQL, al ver que estás encerrando ese valor entre comillas, asume que es tipo texto, y por eso genera el error. Quita las comillas. Y tendrás que asegurarte que ese valor sea realmente entero o te arruinará la consulta.
Código php:
Ver original
  1. $insertar= "INSERT INTO database (campo1,campo2,campo3,idtabla) VALUES (" . (int)$formularioa[$i] . ",'".$formulariob[$i]."','".$formularioc[$i]."','5')";
Lo mismo para los demás campos, si también son numéricos

Saludos,
  #10 (permalink)  
Antiguo 04/11/2008, 13:45
 
Fecha de Ingreso: agosto-2008
Mensajes: 166
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Ayuda básica con sintaxis

Genial! : D Me va bien.
Muchas gracias!
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 12:14.